dr.nomore
19.11.2013 - 08:15
Имея дело с детерминированным массивом, явно объявленным короче, проверять иссетом наличие в нем элементов не научно.
Потому что переменную конечно можно нахлобучить и тогда array_key_exists() упадет ниже пола. Но именно для того и существуют закрытые переменные объекта, чтобы никакая их не нахлобучила заставляя нас делать бессмысленные проверки.
isset($arr['elem'] проверяет и $arr и $elem в нем. Ну там с NULL гемор, это не суть важно.
array_key_exists() проверяет сразу $elem. Существование самого массива подразумевается.
Если это не экономия, то я не знаю что такое экономия.
Про какую вторую функцию во втором случае шла речь я тоже не понял.
dr.nomore
19.11.2013 - 08:23
Может кто не знает. isset'ом проверяется сколько хочешь переменных.
if(isset($name, $car, $home, $religion, $wife, $wife_is_beautiful, $etc))
echo "Your life is great!";
else
echo "Your life is piece of shit";
borntobebad
19.11.2013 - 08:31
раз тема не остыла вот еще по теме , немного изменил код но он не выдает данные из массива , не вижу где ошибся
class MaClass{
private $_propertie1;
function hydrater(array $data){
foreach($data as $prop=>$valeur){
$monMethod='set'.ucfirst($prop);
if(method_exists($this,$monMethod)){
$this->$monMethod($valeur);
}
}
}
function getPropertie1(){
return $this->_propertie1;
}
function setPropertie1($data){
$this->_propertie1 = $data;
}
}
$donnees = array('propriete1' => "valeur1");
$monObjet = new MaClass();
$monObjet->hydrater($donnees);
dr.nomore
19.11.2013 - 08:34
Про try catch. Исключения улавливаются и направляются куда следует после
set_exception_handler и set_error_handler.
borntobebad, ну так ведь $donnees = array('propertie1' => "valeur1");
dr.nomore
19.11.2013 - 08:37
private $_propertie1;
Для начала. Закрытые переменные никто кроме объекта не видит, а значит можно неплохо сэкономить на клаве. Публичные переменные, конечно, должны иметь в своем имени смысл.
private $_p1;
Цитата (dr.nomore @ 19.11.2013 - 04:37) |
Для начала. Закрытые переменные никто кроме объекта не видит, а значит можно неплохо сэкономить на клаве. |
А как вы сами будете разбираться, когда при таком подходе получите что-то типа
class someClass
{
private $t1 = array(),
$p0 = 1,
$tt1 = true,
$tt2,
$iOp,
$q,
$r,
$t = -1,
$y,
$u,
$i1p;
}
лучше уж давать осмысленные названия
dr.nomore
19.11.2013 - 08:47
Такого не бывает. Если у вас длинные списки приватных свойств, значит что-то пошло не так и очень не туда. Например пошло в постскрипт.
borntobebad
19.11.2013 - 08:48
смысл не в том как назвал , я из массива нечего не могу вывести
$donnees = array('Танк' => "Т-90");
dr.nomore
19.11.2013 - 08:49
Цитата (borntobebad @ 19.11.2013 - 08:48) |
смысл не в том как назвал , я из массива нечего не могу вывести
$donnees = array('Танк' => "Т-90"); |
Надо посмотреть как вы это делаете. Выводите.
dr.nomore
19.11.2013 - 08:51
"Т-90"
Оно точно не попробует вычесть 90 из Т?
Не используйте двойные кавычки без особой нужды. Они необычные.
Цитата (dr.nomore @ 19.11.2013 - 04:47) |
Такого не бывает |
, да ладно. Вот, например , ZF2
namespace Zend\ServiceManager;
use ReflectionClass;
class ServiceManager implements ServiceLocatorInterface
{
const SCOPE_PARENT = 'parent';
const SCOPE_CHILD = 'child';
@var
protected $canonicalNames = array();
@var
protected $allowOverride = false;
@var
protected $invokableClasses = array();
@var
protected $factories = array();
@var
protected $abstractFactories = array();
@var
protected $delegators = array();
@var
protected $pendingAbstractFactoryRequests = array();
@var
protected $lastAbstractFactoryUsed = null;
@var
protected $lastCanonicalNameUsed = null;
@var
protected $shared = array();
@var
protected $instances = array();
@var
protected $aliases = array();
@var
protected $initializers = array();
@var
protected $peeringServiceManagers = array();
@var
protected $shareByDefault = true;
@var
protected $retrieveFromPeeringManagerFirst = false;
@var
protected $throwExceptionInCreate = true;
@var
protected $canonicalNamesReplacements = array('-' => '', '_' => '', ' ' => '', '\\' => '', '/' => '');
З.Ы, только не нужно придираться к protected и private, этот пример лишь показывает, что возможны различные ситуации.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.