2017-02-13 2 views
0

Я.net разработчик только начал работать над проектом PHP с использованием Laravel. В .net мы можем часто создавать список. Каков альтернативный способ сделать то же самое в PHP. После этого я хочу передать этот список в качестве параметра метода & для доступа к элементам списка. Я искал в Google, но не нашел ничего подходящего. Я знаю, что это может быть очень простой вопрос с точки зрения разработчиков PHP. Но я все еще в замешательстве. & не может продолжить работу.Как создать список объектов в php

например, в коде .NET, мы создаем список объектов, как -

public List<ReaderInfo> readerInfo = null; 

Чтобы передать этот объект списка в методе -

InitReaderInfo(readerInfo); 

Определение метода записывается как -

public void InitReaderInfo(List<ReaderInfo> reader) 

Теперь, я хочу преобразовать то же самое в PHP. Любое предложение?

+0

начать обучение на php.net –

+0

использовать массивы. лучший способ добиться этого. –

+0

Если вы работаете с Laravel, тогда вы хотите «Collection», а не массив –

ответ

0

PHP не является сильным типом языка. Он также не поддерживает generics или generic methods. Это вообще означает, что вы не можете написать это:

public List<ReaderInfo> readerInfo = null; 

или это:

public void InitReaderInfo(List<ReaderInfo> reader) 

Там нет простого способа обеспечения типа перечислять элементы только определив его. Тем не менее, PHP поддерживает argument types declaration так что вы можете сделать это:

<?php 

class Thing { 
    private $name; 
    public function __construct($name) { 
    $this->name = $name; 
    } 
    public function __toString() { 
    return $this->name; 
    } 
} 

class Fruit extends Thing {} 

class ThingList { 
    private $list; 
    public function __construct(Thing ...$list) { 
    $this->list = $list; 
    } 
    public function __toString() { 
    return array_reduce($this->list, function ($carry, $item) { 
     return $carry . $item . "\n"; 
    }, ''); 
    } 
} 

function PrintThings(ThingList $list) { 
    // ... do something to the thing list 
    echo $list; 
} 

?> 

для того, чтобы получить более безопасность типов, как это:

<?php 

// declare a list of thing 
$things = new ThingList(
    new Thing("apple"), 
    new Fruit("orange") 
); 

PrintThings($things); 

?> 

Если вы говорите о конкретном решении Laravel, я предлагаю вам посмотрите на библиотеку jcrowe/type-safe-collection, в которой вы можете делать похожие вещи с гораздо меньшими затратами труда.