Php 为什么要同时使用实例化和静态方法?
以下代码来自一个名为“特色评论”的wordpress插件。它是由一位备受尊敬的开发人员编写的,所以我知道代码是100%正确的Php 为什么要同时使用实例化和静态方法?,php,wordpress,plugins,Php,Wordpress,Plugins,以下代码来自一个名为“特色评论”的wordpress插件。它是由一位备受尊敬的开发人员编写的,所以我知道代码是100%正确的 public static function instance() { if ( ! isset( self::$instance ) ) { self::$instance = new Featured_Comments; self::$instance->includes();
public static function instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new Featured_Comments;
self::$instance->includes();
self::$instance->init();
self::$instance->load_textdomain();
do_action( 'featured_comments_loaded' );
}
return self::$instance;
}
开发人员使用静态方法公共静态函数实例{然后自己实例化::$instance=new Featured_Comments;为什么?我是oop新手,认为静态方法不需要实例化?请有人解释一下
完整的wordpress插件可以在wordpress存储库中找到,称为“特色评论”。谢谢!正如其他人提到的那样-开发人员似乎遵循了设计模式 $instance属性是静态的,以确保它始终是唯一的实例。如果您查看属性声明,您会注意到它被声明为private,这将阻止您从当前类之外更改值 实例方法是静态的,因此您不必实例化此类来访问实例方法。否则,您必须执行以下操作:
$classInstance = new YourClass();
$instance = $classInstance->instance();
但是使用static关键字只是
$instance = YourClass::instance();
在您的例子中,类似乎为插件运行准备了一些资产
self::$instance->includes();
self::$instance->init();
self::$instance->load_textdomain();
FeturedComments实例返回的return self::$instance;似乎是完成所有繁重任务的实例,而且它必须只实例化一次以避免混乱。看起来像一个Hi,我知道单例模式确保类只能实例化一次。然而,为什么开发人员要实例化静态method?谢谢!否则在一个非静态类中就不会有实例。这就是可怕的singleton的意思,所以singleton类只需要使用static$instance实例化一次这个类?我以前读过的所有php网站都说不要实例化静态,因为这是不必要的?singleton听起来很矛盾静态方法实例实例化了Featured_Comments类的一个新实例,并在静态属性$instance中设置该实例……然后,对静态实例方法的所有后续调用都将返回该单个实例