[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: seters/geters
Страницы: 1, 2, 3
dr.nomore
Имея дело с детерминированным массивом, явно объявленным короче, проверять иссетом наличие в нем элементов не научно.

Потому что переменную конечно можно нахлобучить и тогда array_key_exists() упадет ниже пола. Но именно для того и существуют закрытые переменные объекта, чтобы никакая их не нахлобучила заставляя нас делать бессмысленные проверки.

isset($arr['elem'] проверяет и $arr и $elem в нем. Ну там с NULL гемор, это не суть важно.

array_key_exists() проверяет сразу $elem. Существование самого массива подразумевается.

Если это не экономия, то я не знаю что такое экономия.

Про какую вторую функцию во втором случае шла речь я тоже не понял.
dr.nomore
Может кто не знает. 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
раз тема не остыла вот еще по теме , немного изменил код но он не выдает данные из массива , не вижу где ошибся

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
Про try catch. Исключения улавливаются и направляются куда следует после

set_exception_handler и set_error_handler.
kaww
borntobebad, ну так ведь $donnees = array('propertie1' => "valeur1");
dr.nomore
private $_propertie1;

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

private $_p1;
kaww
Цитата (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
Такого не бывает. Если у вас длинные списки приватных свойств, значит что-то пошло не так и очень не туда. Например пошло в постскрипт.
borntobebad
смысл не в том как назвал , я из массива нечего не могу вывести

$donnees = array('Танк' => "Т-90"); user posted image
dr.nomore
Цитата (borntobebad @ 19.11.2013 - 08:48)
смысл не в том как назвал , я из массива нечего не могу вывести

$donnees = array('Танк' => "Т-90"); user posted image

Надо посмотреть как вы это делаете. Выводите.
dr.nomore
"Т-90"

Оно точно не попробует вычесть 90 из Т?

Не используйте двойные кавычки без особой нужды. Они необычные.
kaww
Цитата (dr.nomore @ 19.11.2013 - 04:47)
Такого не бывает
, да ладно. Вот, например , ZF2
Свернутый текст
namespace Zend\ServiceManager;

use ReflectionClass;

class ServiceManager implements ServiceLocatorInterface
{

/**@#+
* Constants
*/

const SCOPE_PARENT = 'parent';
const SCOPE_CHILD = 'child';
/**@#-*/

/**
* Lookup for canonicalized names.
*
*
@var array
*/

protected $canonicalNames = array();

/**
*
@var bool
*/

protected $allowOverride = false;

/**
*
@var array
*/

protected $invokableClasses = array();

/**
*
@var string|callable|\Closure|FactoryInterface[]
*/

protected $factories = array();

/**
*
@var AbstractFactoryInterface[]
*/

protected $abstractFactories = array();

/**
*
@var array[]
*/

protected $delegators = array();

/**
*
@var array
*/

protected $pendingAbstractFactoryRequests = array();

/**
*
@var string
*/

protected $lastAbstractFactoryUsed = null;

/**
*
@var string
*/

protected $lastCanonicalNameUsed = null;

/**
*
@var array
*/

protected $shared = array();

/**
* Registered services and cached values
*
*
@var array
*/

protected $instances = array();

/**
*
@var array
*/

protected $aliases = array();

/**
*
@var array
*/

protected $initializers = array();

/**
*
@var ServiceManager[]
*/

protected $peeringServiceManagers = array();

/**
* Whether or not to share by default
*
*
@var bool
*/

protected $shareByDefault = true;

/**
*
@var bool
*/

protected $retrieveFromPeeringManagerFirst = false;

/**
*
@var bool Track whether not to throw exceptions during create()
*/

protected $throwExceptionInCreate = true;

/**
*
@var array map of characters to be replaced through strtr
*/

protected $canonicalNamesReplacements = array('-' => '', '_' => '', ' ' => '', '\\' => '', '/' => '');
/** какие-то методы */


З.Ы, только не нужно придираться к protected и private, этот пример лишь показывает, что возможны различные ситуации.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.