另一个类的静态数组变量不允许调用第二个类的方法。
另一个类的静态数组变量不允许调用第二个类的方法。
我无法弄清楚为什么这个代码不起作用:\n
class Test { public static $arData=array(); public static function addMember(Person $member) { self::$arData[]=$member; } public static function showAll() { for($i=0;$ishow(); } } }
\n我得到的错误是:Fatal error: Call to a member function show() on a non-object
。\nshow()
方法确实存在,它基本上打印出一个人的姓名和位置。\n在构造函数中,如果我将 $member 添加到 $arData 而不是执行 $member->show(),它可以正常工作。\n那么...出了什么问题?
静态数组变量不能调用另一个类的方法的问题出现的原因是因为静态数组变量只能直接访问类的静态属性,不能直接调用类的方法。
要解决这个问题,可以使用以下方法:
1. 将静态数组变量改为非静态数组变量。这样可以通过实例化类的对象来调用方法。例如:
$obj = new AnotherClass(); $obj->show();
2. 在静态数组变量的类中添加一个静态方法,用于调用另一个类的方法。例如:
class MyClass { public static function showAnotherClassMethod($i) { self::$arData[$i]->show(); } } MyClass::showAnotherClassMethod($i);
通过以上方法,就可以解决静态数组变量不能调用另一个类的方法的问题。