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

phpOO静态关键字及类常量实例详解

闲着没事随便找了点php的关于oo的点资料看看,访问控制修饰符,self,parent,const,static几个关键字,箭头操作符(书上也这么叫..即“->”),范围解析操作符(即双冒号“::”),不过觉得这个跟c#语言里的oo很多是一样的,很容易理解不过还是看看理清php里的oo思路还是应该的吧。
--------------------------------------------------------------------------------
声明静态的类的成员和方法,使它不需要一个类的实例.一个static成员的声明不能通过一个类对象的实例来访问(尽管一个静态方法可以)。
静态声明必须在可见性声明之后。为了兼容php 4,如果没有可见性被声明,那么成员和方法将被当作是已经声明为public。
由于静态方法可以调用非对象实例,伪变量$this不可以在声明为静态的方法中使用。
事实上static方法调用形式在编译时被确定。当使用必须要声明的类名时,方法是完全标识和无继承规则的应用。当使用必须要声明的类名时,这种方法就被完全确认,而且没有使用继承的规则。
如果self已经被声明,那么self就被当前所属的类所解释。也不适用与继承规则。静态属性不能通过箭头操作符->.访问非静态方法,这将产生一个e_strict 级的警告。
代码如下:
<?php class foo { public static $my_static='foo'; public function staticvalue(){ return self::$my_static; } } class bar extends foo { public function foostatic(){ return parent::$my_static; } } print foo::$my_static."/n"; $foo = new foo(); print $foo->staticvalue()."/n"; print $foo->my_static."/n";// undefined "property" my_static // $foo::my_static is not possible print bar::$my_static."/n"; $bar = new bar(); print $bar->foostatic()."/n"; ?>
代码如下:
//静态方法实例(static method example) <?php class foo { public static function astaticmethod() { } } foo::astaticmethod(); ?>
可以在每个基类中定义常量使它保持不变。在你不使用$符号去声明或使用它时,常量不同于普通变量。就象静态成员,常量值不能通过对象的实例来访问(而应使用$object::constant). 常量值必须是一个常量表达式,而不是一个变量,一个类的成员,一个数学表达式或函数调用的结果。
<?php class myclass { const constant = 'constant value'; function showconstant() { echo self::constant."/n"; } } echo myclass::constant."/n"; $class = new myclass(); $class->showconstant();// echo $class::constant; is not allowed ?>
以上就是phpoo静态关键字及类常量实例详解的详细内容。
其它类似信息

推荐信息