php的访问控制,有点东西

本文涉及的产品
访问控制,不限时长
简介: public(公有),protected(受保护)或 private(私有) ,这是php面对对象经常也用写到的。如果不写,那默认是public
public(公有),protected(受保护)或 private(私有) ,这是php面对对象经常也用写到的。如果不写,那默认是public

被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。

有点东西第一点

注意protected和private 访问的地方都是类里!类!类!

你会看到这样的实例

**
 * Define MyClass
 */
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';
    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
echo $obj->protected; // 这行会产生一个致命错误
echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private

有点东西2

private 而不能在类外改变,因为不能在对象输出,跟上面有点重复?不

这就跟 python 的 self.__xx 这样的私有变量一样,无法直接重定义,

但要去修改 private,跟 python 一样,需要另外写一个方法,直接通过类去改变,而不是对象

<?php
class Test
{
    private $foo;
    public function __construct($foo)
    {
        $this->foo = $foo;
    }
    private function bar()
    {
        echo 'Accessed the private method.';
    }
    public function baz(Test $other)
    {
        // We can change the private property:
        $other->foo = 'hello';
        var_dump($other->foo);
        // We can also call the private method:
        $other->bar();
    }
}
$test = new Test('test');
$test->baz(new Test('other2'));
?>
string(5) "hello"Accessed the private method.

baz(Test $other) Test是类,这里相当于声明Test类型的变量,作用跟stringint一样,

这样后效果是传入的参数量是一个对象,并且是跟test同一个类,这样可以改这个类的对象的任何值,无视 权限

同时$test->baz(new Test('other2'));也可以看成,这个括号里的是类

这叫做类型约束

当然了,你还可以继续搜索,有其它方法去获取和改变私有变量

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
7月前
|
存储 安全 PHP
安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
|
安全 Apache PHP
Apache配置----访问控制,禁止解析php
Apache配置----访问控制,禁止解析php
160 0
|
PHP 数据安全/隐私保护 设计模式
php访问控制的介绍
属性的访问控制 php中,类的属性必须被定义为公有(public),受保护(protected),私有(private)三个中的一个。PHP4中可以用var关键词定义属性,默认未公有。被定义为公有的类成员可以在任何地方被访问。
1572 0
|
2月前
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
60 0
|
1月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####