从函数访问 class 个实例
Access class instance from function
是否可以做类似的事情:
class Class1
{
public function __construct($param1) {
# code ...
}
public function method1() {
# code ...
echo 'works';
}
}
$class1 = new Class1('foo');
function function1() {
$class1->method1();
}
function1();
或者我是否需要将 class 的实例传递给函数?
谢谢。
您必须将实例传递给函数,或使用 GLOBALS :)。
1) 实例 - 最佳解决方案
function function1(Class1 $class) {
$class->method1();
}
2) 全局变量 - http://php.net/manual/en/reserved.variables.globals.php - 但是你必须小心,全局变量很难跟踪和测试你的代码。最好的方法就是将它作为参数传递。
function function1() {
global $class1;
$class1->method1();
}
PS。您应该尽量避免混合对象 - 函数编程。如果您决定使用对象编程,请尝试将所有内容实现为对象。更易于维护、阅读和更新。混合对象和函数是好的,前提是你是 'rewriting' 旧系统对象,并不是所有事情都可以一次完成。
PS2。对象应该始终实现真实对象或抽象对象(路由器、数据库、table、用户)。在那种情况下,当您的函数需要对象时,将它作为参数传递就是您所需要的——实际上这个函数需要这个对象。所以通过它并不丢脸,而是自豪;)。
此致,希望对您有所帮助。
是否可以做类似的事情:
class Class1
{
public function __construct($param1) {
# code ...
}
public function method1() {
# code ...
echo 'works';
}
}
$class1 = new Class1('foo');
function function1() {
$class1->method1();
}
function1();
或者我是否需要将 class 的实例传递给函数?
谢谢。
您必须将实例传递给函数,或使用 GLOBALS :)。
1) 实例 - 最佳解决方案
function function1(Class1 $class) {
$class->method1();
}
2) 全局变量 - http://php.net/manual/en/reserved.variables.globals.php - 但是你必须小心,全局变量很难跟踪和测试你的代码。最好的方法就是将它作为参数传递。
function function1() {
global $class1;
$class1->method1();
}
PS。您应该尽量避免混合对象 - 函数编程。如果您决定使用对象编程,请尝试将所有内容实现为对象。更易于维护、阅读和更新。混合对象和函数是好的,前提是你是 'rewriting' 旧系统对象,并不是所有事情都可以一次完成。
PS2。对象应该始终实现真实对象或抽象对象(路由器、数据库、table、用户)。在那种情况下,当您的函数需要对象时,将它作为参数传递就是您所需要的——实际上这个函数需要这个对象。所以通过它并不丢脸,而是自豪;)。
此致,希望对您有所帮助。