是否可以做类似的事情:
class Class1
{
public function __construct($param1) {
# code ...
}
public function method1() {
# code ...
echo 'works';
}
}
$class1 = new Class1('foo');
function function1() {
$class1->method1();
}
function1();
或者我是否需要将类的实例传递给函数?
谢谢。
答案 0 :(得分:1)
您必须将实例传递给函数,或使用GLOBALS:)。
1)实例 - 最佳解决方案
function function1(Class1 $class) {
$class->method1();
}
2) Globals - http://php.net/manual/en/reserved.variables.globals.php - 但是你必须小心,Globals,很难跟踪和测试你的代码。最好的方法就是将其作为参数传递。
function function1() {
global $class1;
$class1->method1();
}
PS。你应该尽量避免混合对象 - 函数编程。如果您决定使用对象编程,请尝试将所有内容都实现为对象。维护,阅读和更新更容易。混合对象和功能是好的,只有当你正在重写'旧系统对象,而不是一切都可以立即完成。
PS2。对象应始终实现真实对象或抽象对象(路由器,数据库,表,用户)。在这种情况下,当你的函数需要对象时,将它作为参数传递就是你需要的 - 实际上这个函数需要这个对象。因此,传递它并不是羞耻,相当自豪;)。
致以最诚挚的问候,希望有所帮助。