您好,欢迎访问一九零五行业门户网

php self

php类中的this,self,parentthis代表当前对象,self代表当前类,parent代表父类,这个解释很晦涩,下面结合例子具体说明一下selfphp类的定义和对象(实例)的存储是分开的,类的定义只有一份,实例可以有多个。self就代表类定义类的定义主要包括方法(类的属性可以动态添加),不严谨的说,方法是属于类的,属性是属于对象的。那么理论上通过类名就可以调用类的所有方法(包括静态,非静态,注意访问限制),包括继承来的,从这个角度来说self==当前类。所以通过self,类名可以调用本类的常规方法,静态方法,父类的方法(后记,如方法中用了this,会报运行时错误,但语法没有问题)
class a{ public static $count=1; const n = 10; private $_a = _a \n; protected $_b = _b \n; public $c = c \n; public function n() { echo __method__.\n; } public function func() { echo __method__. .$this->c; } public static function f() { echo __method__.\n; } public static function fn() { echo __method__. .self::n.\n; } }class b extends a{ const n = 100; public static $count=1; public $p = pp\n; public function d() { echo __method__. .$this->p. \n; } public function e() { self::n(); echo __method__. \n; } public static function f(){ self::e(); self::n(); echo __method__.\n; } public function func() { parent::func(); echo func\n; }}echo =========b:e()=========\n;b::e();echo =========b:n()=========\n;b::n();echo =========b:f()=========\n;b::f();echo =========b:d()=========\n;b::d(); // 运行时错误error

以上就介绍了php self,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息