2013-12-05 1 views
-1

в C# есть возможность создать список объектов для переменных класса в следующем методеКак создать объект List для переменных класса с использованием PHP

public class Distribute 
    { 

     public string Alias { get; set; } 
     public string Count { get; set; } 

    } 

    public List<Distribute> States { get; set; } 

Так что мой вопрос, как реализовать выше кода в PHP с использованием юй фреймворк? Спасибо заранее!

+0

Большая часть синтаксиса, используемого в данном фрагменте кода не доступен в PHP. Вместо того, чтобы спрашивать, как перевести очень конкретный фрагмент кода на другой язык, где это неприменимо, вы должны спросить, как решить ту же проблему на идиоматическом языке на новом языке. – deceze

ответ

3

Может быть, вы можете использовать SplDoublyLinkedList класс или ArrayAccess интерфейс, а затем переопределить элемент набор методов (push/offsetSet)

class ListContainer extends SplDoublyLinkedList 
{ 
    protected $type; 

    public function __construct($listType) 
    { 
     $this->type = $listType; 
    } 

    public function push($value) 
    { 
     if (!$value instanceof $this->type) { 
      throw new Exception('Element must be instance of ' . $this->type); 
     } 

     parent::push($value); 
    } 

    public function offsetSet($index , $value) 
    { 
     if (!$value instanceof $this->type) { 
      throw new Exception('Element must be instance of ' . $this->type); 
     } 

     parent::offsetSet($index, $value); 
    } 
} 

class Distribute 
{ 
    public $alias; 
    public $count; 
} 

$states = new ListContainer('Distribute'); 
$dist = new Distribute; 
$dist->alias = 'd1'; 
$dist->count = 17; 

$states->push($dist); 
+0

Это должно быть '! ($ Value instanceof Distribute)'. – deceze

+0

@deceze 1) Синтаксис правильный, вы можете попробовать. 2) дать исключение вместо фатальной ошибки. – aykut

+0

Хмм, я заберу это. Тогда даже руководство неправильно напрашивается, рекомендуя '! (...)'. – deceze

Смежные вопросы