PHP Array извлекающий объект - PullRequest
       8

PHP Array извлекающий объект

1 голос
/ 13 февраля 2009

Предположим, у меня есть массив объектов определенного пользователем класса. Хотел узнать, как мне извлечь элементы массива в PHP.

// class definition
class User
{
public $fname;
public $lname;
}

// array of objects of the class defined above
$objUser1 = new User():
$objUser2 = new User():
$objUser3 = new User():
$objUser4 = new User():

$alUser = array();
$alUser[] = $objUser1;
$alUser[] = $objUser2;
$alUser[] = $objUser3;
$alUser[] = $objUser4;


// trying to iterate and extract values using typcasting - this does not work, what is the alternative.
foreach($alUser as $user)
{
$obj = (User) $user; // gives error - unexpected $user;
}

Вот как я обычно делал в java при извлечении объектов из Java ArrayList, поэтому думал, что путь PHP может быть похожим. Может кто-нибудь объяснить это.

Ответы [ 3 ]

8 голосов
/ 13 февраля 2009
foreach ($alUser as $user) {
    $obj = $user;
}

Зачем вам для этого нужно приведение типов?

3 голосов
/ 13 февраля 2009

PHP - это динамически типизированный язык. В большинстве случаев нет необходимости кастовать.

Невозможно привести пользователя: см. Документацию PHP по жонглированию и приведению типа .

В этом примере будет напечатано "$user is a object (User)" четыре раза.

foreach($alUser as $user) {
    echo '$user is a ' . get_type($user);

    if(is_object($user)) {
        echo ' (' . get_class($user) . ')';

    echo "\n";
}
0 голосов
/ 02 ноября 2009

Было бы неплохо, например, в Eclipse PDT определить тип объекта для дополнения кода. в противном случае вы застряли на обратном пути, где был создан массив и какие объекты были помещены в него, а затем посмотрите на файл класса, чтобы увидеть, какие функции доступны (или временно создайте новый theObject (), чтобы увидеть, какие методы / свойства доступны, если знать, к какому типу объектов это относится. В других случаях может быть не так просто, если многие объекты вызывают функции, которые создают эти массивы, и объекты в них, поэтому придется вернуться, чтобы увидеть, как эти массивы были созданы). Слышал, что несколько других IDE могут определить тип лучше, например phpEd?

...