Что вы делаете? Ни одна структура не лучше во всем, поэтому оба существуют. Так что это действительно зависит от вашего набора проблем, который «лучше». И даже тогда это может быть просто случай, который вы предпочитаете. Много архитектуры и дизайна кода - это личные предпочтения и стиль.
Теперь, в общем, есть только один раз, когда я использовал бы объект без методов (stdclass
или пользовательский определенный) над массивом. Вот если мне нужно будет передавать эти данные по многим параметрам и изменять их в разных местах. С массивом вам нужно будет передать его по ссылке, которая становится громоздкой и может привести к источникам ошибок ... С объектом он по умолчанию передается как ссылка на объект (не ссылка на переменную, а указатель на тот же объект). Итак, с массивом вам нужно будет сделать что-то вроде:
function doSomething($inVar, array &$inOutArray) {
$inOutArray['bar'] = 'baz';
}
Для каждой функции, которая изменяет (или может изменять) массив.
В то время как с объектом, вы просто могли бы сделать:
function doSomething($inVar, $object) {
$object->bar = 'baz';
}
Это короче (конечно, только один символ, но это один символ везде, где вы можете изменить массив). Это менее склонны к ошибкам, так как если вы позже сделать $object = new Something()
, это не изменит исходный объект (так как это не ссылка на переменную) ...
Единственный аргумент в том, что он чуть менее читаемым, так как &
шоу вы явно указываете, что собираетесь изменить эту входную переменную. Но если вы понимаете, как работают объекты на PHP 5, вы не должны быть застигнуты врасплох (и, следовательно, это приемлемый компромисс в моем сознании) ...
Почему вы говорите, что 1 лучше, чем 2? Я лично не согласен с этим заявлением. Можете ли вы объяснить, почему вы думаете, что 1 лучше, чем 2? Мы говорим об эффективности, потреблении памяти, практике кодирования? Посмотрите также: http://particletree.com/notebook/object-oriented-php-memory-concerns/. – Chris
Просто подсказка: возможно, массивы потребляют меньше ресурсов. – fabrik
@ Крис: Кажется, я где-то читал, что если вам нужна структура, чтобы просто хранить данные, тогда 1 - это предпочтительный способ. –