0
您好我有一個類:與受保護財產AbstractEntityType:訪問PHP保護性
abstract class AbstractEntityType extends AbstractType {
protected static $lists = null;
public function __construct($lists = array()) {
AbstractEntityType::$lists = $lists;
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setRequired(array(
'temp', 'statut'
));
}
}
這裏是另一個類擴展上一個:
class MyType extends AbstractEntityType {
....
}
我使用一個工廠來創建的MyType等級:
class SimpleFormTypeFactory {
public function createType($entity_type, $entity_stub, $lists = null) {
$type = null;
switch($entity_type) {
....
case SOMENUMTYP:
$type = new MyType($lists);
break;
}
}
我在本地測試它與php 5.4和windows沒有問題,但在服務器(Linux和PHP 5.3)我有這個錯誤:
Error: Cannot access protected property MyType::$lists
這是怎麼回事?一個PHP錯誤?
謝謝
你是對的一件事情:我應該用自己而不是班級的名字(雖然,就像我說的那樣,它在測試環境中運行良好)。 – mlwacosmos
@mlwacosmos它也不適用於您的測試環境。但我從來沒有在Windows上使用過PHP或服務器,所以我不知道可能會導致什麼結果。可能在錯誤處理,但我猜你會注意到,當它不能正常工作:-) – jeroen
對不起,我犯了一個錯誤,問題不在建設。就像我寫的那樣,它起作用。我的問題在別的地方。你之前寫的關於「不允許受保護的財產」的看法對我來說似乎並不合適,但我可能是錯的。可以調用抽象類中的靜態屬性。在子類中沒有定義構造函數,所以它們都是父類的。 (在Java中就是這樣)。我會問我關於我的問題的另一個問題。 – mlwacosmos