php中trait单例和调用实例详解
程序员文章站
2022-04-15 22:32:58
...
Trait单例
实例如下
<?php trait singleton { /** * private construct, generally defined by using class */ //private function construct() {} public static function getInstance() { static $_instance = NULL; $class = CLASS; return $_instance ?: $_instance = new $class; } public function clone() { trigger_error('Cloning '.CLASS.' is not allowed.',E_USER_ERROR); } public function wakeup() { trigger_error('Unserializing '.CLASS.' is not allowed.',E_USER_ERROR); } } /** * Example Usage */ class foo { use singleton; private function construct() { $this->name = 'foo'; } } class bar { use singleton; private function construct() { $this->name = 'bar'; } } $foo = foo::getInstance(); echo $foo->name; $bar = bar::getInstance(); echo $bar->name;
调用trait方法
虽然不很明显,但是如果Trait的方法可以被定义为在普通类的静态方法,就可以被调用
实例如下
<?php trait Foo { function bar() { return 'baz'; } } echo Foo::bar(),"\\n"; ?>
CLASS和TRAIT
CLASS 返回 use trait 的 class name,TRAIT返回 trait name
示例如下
<?php trait TestTrait { public function testMethod() { echo "Class: " . CLASS . PHP_EOL; echo "Trait: " . TRAIT . PHP_EOL; } } class BaseClass { use TestTrait; } class TestClass extends BaseClass { } $t = new TestClass(); $t->testMethod(); //Class: BaseClass //Trait: TestTrait
以上就是php中trait单例和调用实例详解的详细内容,更多请关注其它相关文章!
下一篇: 什么是php单例模式?单例模式用法详解
推荐阅读
-
PHP中__get()和__set()的用法实例详解
-
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
-
php实现设计模式中的单例模式详解
-
PHP工厂模式、单例模式与注册树模式实例详解
-
详解WordPress中调用评论模板和循环输出评论的PHP函数
-
PHP中__get和__set的用法实例详解
-
详解WordPress中调用评论模板和循环输出评论的PHP函数,详解wordpress_PHP教程
-
详解WordPress中调用评论模板和循环输出评论的PHP函数,详解wordpress_PHP教程
-
php中设计模式工厂模式和单例模式实例
-
php扩展中c++单例模式的全局对象实例被生成多个子进程销毁,为啥?该如何解决