导航:首页 > 编程语言 > php受保护的方法

php受保护的方法

发布时间:2024-02-09 03:03:27

php如何调用类中的protected方法

classControllercommonfooter{
protectedfunctionindex(){
echo'abcd';
}
}

$reflection_class=newReflectionClass('Controllercommonfooter');
var_mp($reflection_class);#output_1
$reflection_method=$reflection_class->getMethod('index');
var_mp($reflection_method);#output_2
var_mp($reflection_method->isProtected());#output_3

$class='Controllercommonfooter';
$method='index';
$args=array();

$controller=new$class();
$controller->$method($args);

⑵ php弹出“undefined property:stdclass” ,怎么解决

这种情况一般是你对一个类对象,使用了属性调用造成的。

比如应该是

echo$a->att1;


你写错成了:

echo$a['att1'];


改回来就可以了。

PHP中使用关键字 class 来定义一个类。类的命名一般使用首字符大写,而后每个单词首字符大写连接的方式方便阅读。


在PHP5中,属性指在class 中声明的变量。在声明变量时,必须使用 public private protected 之一进行修饰,定义变量的访问权限。PHP中的属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)

Public(公开): 可以自由的在类的内部外部读取、修改。


Private(私有): 只能在这个当前类的内部读取、修改。


Protected(受保护):能够在这个类和类的子类中读取和修改。属性的使用:通过引用变量的 -> 符号调用变量指向对象的属性。


在方法内部通过 $this-> 符号调用同一对象的属性。

所以应该用箭头调用而不是括号。

⑶ php class中public,private,protected,static

1. public:权限是最大的,可以内部调用,实例调用

2. protected: 受保护类型,用于本类和继承类调用

常用场景在权限设置

有需要用到权限的Class,只要继承Base这个Class即可用到登录验证。执行Login的时候会先运行Base里面的方法

3. private: 私有类型,只有在本类中使用。

4. static: 一般是在传值的时候使用,表示值不会被修改,默认为public,可用::访问

⑷ PHP __get和__set魔术方法在面向对象中的使用问题

php的面向对象思想编程中声明方法有三种不同的权限:public protect private。
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
这些权限同样可以应用在变量声明中。
__set __get 都是php的魔术方法,主要是为了用来改变类的私有属性用的。
你觉得麻烦可以将private私有的变量改为公共public变量,这个要看需求和个人对面向对象的思考。
追问 : 我想知道的是(用private封装然后用__set或者__get )和(public设置类的属性)有什么不同.都可以取值赋值.
追答 : 没什么不同的,实现的效果都一样,只是private是为了限制访问入口少一些,或者之前用private时没有考虑到有如今的调用情况,所以在加了set或get。 比较public是所有人都可以访问,private是内部人可以访问,从权限来看,private会安全一些。

⑸ php 的public作用

从PHP5.0版本开始,对象声明时需要声明对象属性和方法的可见性,public关键字表示属性或方法是公开可见的。

在PHP5.0之前未支持对象属性和方法的可见性定义,默认所有的属性和方法都是公开可见的,如以下的对象声明:

//例1
classObj{
var$name='Obj';
functiongetName(){
return$this->name;
}
}

而PHP5开始推荐写法为:

//例2
classObj{
protected$name='Obj';
publicfunctiongetName(){
return$this->name;
}
}

对于例1来说,实际上可以直接访问name属性,从而绕过getName方法,如

$obj=newObj();
echo$obj->name;

而对于例2来说,由于$name属性是protected(受保护的),因此必须使用getName方法才能得到$name属性的值。

同时这也是面向对象语言通用的一种声明方式。

public: 公开可见

protected: 对象内部可见 (该对象的子对象同样可以访问)

private: 对象自身内部可见 (不包含该对象的子对象,或者说private属性和方法不会被继承)

⑹ php怎么理解这些个关键字啊,public;private;protect;final;static;const;我感觉这

public: 公有属性或方法
在子类中可以通过self::var 或self::method 来调用,可以通过parent::method来调用父类中的方法,但不能调用公有属性.
在实例中可以通过$obj->var或self::method 来调用
protected: 受保护类型
在子类中可以通过self::var 或self::method调用,可以通过parent::method来调用父类中的方法
在实例中不能通过$obj->var 来调用 protected类型的方法或属性
private: 私有类型
该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法
再来说说final
1.final不能用来修饰成员属性
2.final只能修饰类和方法
作用:被修饰的类不能被子类所继承;被修饰的方法不能被子类的方法覆盖。
然后来说说static
1.static用来修饰成员属性和成员方法,但不能用来修饰类
2.用static修饰的成员属性可以被同一个类的所有对象共享
3.静态的数据是存在 内存中的 数据段中(初始化静态段)
4.静态的数据是在类在第一次加载时,分配到内存中的
5.什么是类被加载?只要在程序中使用到这个类(有这个类名出现)
6.静态的成员属性都要用类名去访问,不用创建对象,不用对象去访问;在类里边可以用self代表本类($this)
7.静态方法,不能访问非静态的成员属性(但是,在非静态方法却能访问静态的成员属性),非静态的成员属性,必须用对象访问,在内部访问非静态成员属性,用$this.
8.如果你确定一个方法中不需使用到非静态的成员属性,则可以将这个方法声明为静态方法,不需实例化对象,就可以访问
最后来说说const
1.它只能用来修饰成员属性
2.在类中声明常量必须使用const
3.访问方式和访问静态成员属性一样(类外使用 类名::成员属性,类里边则使用self::成员属性)
4.常量一定要在声明的时候就给初始值

⑺ PHP中private和public还有protected的区别

public:声明方法和属性可以被随意访问。
Protected:声明的方法和属性只能被类本身和其继承子类访问。
private:只能被定义属性和方法的类访问。

private 是完全私有的,只有当前类中的成员能访问到.
protected 是受保护的,只有当前类的成员与继承该类的类才能访问.

protected的访问权介于public和private之间,实际上三者的区别就是权限问题,private和protected区别主要体现在其继承类的访问权限上,这些你可以自己编写一个程序,写个类,编译一下你就很清楚他们权限的区别了。

私有成员private member
只能被成员函数和类的友元访问
实行信息隐藏的类把其数据成员声明为private

被保护成员protected member
对派生类derived class 就像public 成员一样
对其他程序则表现得像private

阅读全文

与php受保护的方法相关的资料

热点内容
疫情命令照片 浏览:95
画世界的app叫什么 浏览:824
vc6编译时显示无法执行 浏览:547
java动态初始化数组 浏览:638
概率论与数理统计答案pdf 浏览:681
得物app上面的鞋为什么这么贵 浏览:909
如何从爱思服务器注销游戏账号 浏览:944
幼儿编程教育培训多少钱 浏览:406
经常生气有什么东西能解压 浏览:903
代理服务器地址和端口可以怎么填 浏览:65
unity5手游编译模型 浏览:268
安卓无人机app源码 浏览:811
pl1编程语言 浏览:801
台达plc编程换算指令大全 浏览:176
手机上的编程游戏 浏览:110
服务器密码机有什么用 浏览:479
dos磁盘命令 浏览:957
单片机cpu52的功能 浏览:693
opc服务器怎么开发 浏览:375
觅喜是个什么app 浏览:405