Извлечение объекта PHP-массива
Вопрос
Предположим, у меня есть массив объектов пользовательского класса.Хотел узнать, как извлечь элементы массива в 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 может быть похожим.Может кто-нибудь объяснить это.
Решение
foreach ($alUser as $user) {
$obj = $user;
}
Зачем вам для этого нужна типизация?
Другие советы
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";
}
Было бы неплохо, например, Eclipse PDT определить тип объекта для завершения кода.в противном случае вы застрянете в обратной трассировке, где был создан массив и какие объекты были помещены в него, а затем посмотрите файл класса, чтобы увидеть, какие функции доступны (или временно создайте новый theObject(), чтобы увидеть, какие методы/свойства доступны, если вы узнать, что это за объект.в других случаях может быть не так просто, если многие объекты вызывают функции, которые создают эти массивы и объекты в них, поэтому приходится выполнять обратную трассировку, чтобы увидеть, как эти массивы созданы).Слышал, что некоторые другие IDE могут определять тип лучше, например, phpEd?