函数中的全局PHP类?
有没有一种方法可以访问PHP函数中类的一个实例?像这样:函数中的全局PHP类?,php,class,function,global,Php,Class,Function,Global,有没有一种方法可以访问PHP函数中类的一个实例?像这样: include("class.php"); $bla=new Classname(); function aaa(){ $bla->DoSomething(); //Doesn't work. } $bla->DoSomething(); //Works. 使用: 适用于所有变量,而不仅仅是类。如果您希望在整个应用程序中仅使用类的单个实例,则应使用单实例,而不是全局实例。你可以这样做: class Class
include("class.php");
$bla=new Classname();
function aaa(){
$bla->DoSomething(); //Doesn't work.
}
$bla->DoSomething(); //Works.
使用:
适用于所有变量,而不仅仅是类。如果您希望在整个应用程序中仅使用类的单个实例,则应使用单实例,而不是全局实例。你可以这样做:
class Classname {
private static $instance;
private function __construct() {...}
public function doSomething() {...}
// The singleton method
public static function singleton() {
if ( !isset(self::$instance) ) {
self::$instance = new self;
}
return self::$instance;
}
private function __clone() { /* do nothing here*/ }
}
function aaa() {
Classname::getInstance()->doSomething();
}
更干净的方法是通过引用将实例传递给给定的类,然后访问它
另一种方法是使用单模式,尽管很多人认为它并不比全局更好。
已经回答过,可以用A来存储类实例,但听起来好像应该考虑使用类似的东西来实现更清洁的实现。
您可以找到一个简单的单例类示例。如果我正确解释了您的问题,那么正确的方法就是创建一个单例类
class Singleton {
private static $instance;
private function __construct() {}
private function __clone() {}
public static function getInstance() {
if (!Singleton::$instance instanceof self) {
Singleton::$instance = new self();
}
return Singleton::$instance;
}
public function DoSomething() {
...
}
}
您可以在函数中调用此函数,如下所示:
function xxx() {
Singleton::getInstance()->DoSomething();
}
但如果他想拥有该类的多个实例呢?单身汉在这里是不必要的。再读一遍他的问题。他特别问“是否有一种方法可以访问php函数中类的一个实例”,正如我在回答中已经说过的,只是一个小链接,你应该遵循它,自己决定singleton是否是正确的方法:True,事实上,他应该首先考虑所有的选择,并决定是否应该采用单一模式,但这项工作将留给问题的海报。这不是我能为他做出的决定……这是最直接的解决方案,至少会让您的稍微耦合的代码工作,直到编写出更优雅的代码
function xxx() {
Singleton::getInstance()->DoSomething();
}