[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: seters/geters
Страницы: 1, 2, 3
borntobebad
Почему не выводит марку машины ? должно высвисти на экран :Мазда

<?php
class
car {
private $_marque;

public function getMarka(){
$this->_marque;
}
public function setMarka($data){
return $this->_marque = $data;
}
}


$tachka = new car();
$tachka->setMarka('Мазда');
echo $tachka->getMarka();
GET
Цитата
class car {
    private $_marque; 
    
    public function getMarka(){               
         return $this->_marque;
    }
    public function setMarka($data){      
          $this->_marque = $data; 
    }
}

$tachka = new car();
$tachka->setMarka('Мазда');
echo $tachka->getMarka();


А чем "родные" магические методы плохи __get и __set?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
dr.nomore
Не выводит потому что нечего выводить.

    public function getMarka(){                
$this->_marque;
}


Что вы ввиду имели тут?

Короче, вот так надо

class car { 
private $_marque;

public function getMarka(){
return $this->_marque;
}
public function setMarka($data){
$this->_marque = $data;
}
}
dr.nomore
чОткие пацаны делают так

class car { 
private $_m = array();

public function __get($name) {
if(array_key_exists($name, $_m)
return $this->$_m[$name];
else
throw new Expception('no such element');
}

public function __set($name, $data) {
$this->_m[$name] = $data;
}
}


http://www.php.net/manual/en/language.oop5....php#object.set

GET
Цитата
Что вы ввиду имели тут?

Короче, вот так надо


А чем отличается от того, что я написал?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
dr.nomore
Тем что у вас не работает, а у меня работает. Или у вас работает, а эта тема недоразумение?

Таким образом можно записать в кароджу не только маздаев, тойотов и тазиков, но и все остальное что с ними связано

$car = new Car;
$car->brand = 'Mazda';
$car->engine_power = 110;
$car->color = 'Red';

echo $car->brand; // output Mazda
echo $car->engine_power; // 100
echo $car->color; // Red
dr.nomore
Цитата (ABC @ 19.11.2013 - 05:30)
Цитата
Что вы ввиду имели тут?

Короче, вот так надо


А чем отличается от того, что я написал?

Тфу блин, я думал ТС пишет.

Где вы отвечали? Ваш ответ в тегах куоте. Пришлось напрячь зрение.

Ничем не отличается.

Отвечайте соблюдая формат.
GET
Цитата
Отвечайте соблюдая формат.


Извините, сэр. smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
borntobebad
ABC + , dr.nomore +, Спасибо что ответили !!!

Цитата
А чем "родные" магические методы плохи __get и __set?


мне так в школе показали smile.gif)



Игорь_Vasinsky
dr.nomore
Цитата
  if(array_key_exists($name, $_m)

скобку закрыть забыл.

и чё ты игноришь try catch?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dr.nomore
Еще и Expception с ошибкой. Ну ясень же пень это не копипаста, а написано живьем в форме ответа.

Не будьте придирастыми.

Про try catch не понял. Объясните.
kaww
Цитата (dr.nomore @ 19.11.2013 - 01:27)
if(array_key_exists($name, $_m)
, раз Игорь уже обратил внимание на эту строку, то и я вставлю свои 5 копеек:
Если использовать isset($this->_m[$name]) вместо array_key_exists, то экономим один вызов функции. А, как известно, getters and setters желательно максимально оптимизировать.
Invis1ble
Цитата
isset() не возвращает TRUE для ключей массива, указывающих на NULL, а array_key_exists() возвращает.
Игорь_Vasinsky
Цитата
Про try catch не понял. Объясните.

да не, просто я и в мануале вижу и советы мне давали - для ооп-го синтаксиса для вылавливания исключений использовать конструкции try catch

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dr.nomore
Правильно, поэтому экономия кончается дополнительной проверкой тех же яиц, вид сбоку.

Кстати, помню, вот нашел, с комментариями:


/**
* Returns the item at the specified offset.
* This method is exactly the same as {
@link offsetGet}.
*
@param integer $index the index of the item
*
@return mixed the item at the index
*
@throws CException if the index is out of the range
*/

public function itemAt($index)
{
if(isset($this->_d[$index]))
return $this->_d[$index];
elseif($index>=0 && $index<$this->_c) // in case the value is null
return $this->_d[$index];
else
throw new CException(Yii::t('yii','List index "{index}" is out of bound.',
array('{index}'=>$index)));
}
Быстрый ответ:

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