Я просто хочу создать функцию так же, как getFieldname()
это в пурпурном.
Например:
В мадженто
getId()
— возвращает значение ID
поле
getName()
— возвращает значение Name
поле
Как я могу создать такую функцию? Пожалуйста, помогите мне в этом случае ..
Я хочу сделать просто как код ниже,
Class Called{
$list=array();
function __construct() {
$this->list["name"]="vivek";
$this->list["id"]="1";
}
function get(){
echo $this->list[$fieldname];
}
}
$instance=new Called();
$instance->getId();
$instance->getName();
Вы можете использовать магический метод __call
чтобы решить вашу ситуацию
<?php
class Called
{
private $list = array('Id' => 1, 'Name' => 'Vivek Aasaithambi');
public function __call($name, $arguments) {
$field = substr($name, 3);
echo $this->list[$field];
}
}
$obj = new Called();
$obj->getId();
echo "<br/>\n";
$obj->getName();
?>
Вы можете прочитать больше о __call
в:
http://php.net/manual/en/language.oop5.overloading.php#object.call
Проверьте выполнение Varien_Object
, __call
метод, вероятно, то, что вы ищете, я думаю. http://freegento.com/doc/de/d24/_object_8php-source.html
Это будет в основном «захватывать» любые несуществующие вызовы методов, и если они в форме $this->getWhateverField
, будет пытаться получить доступ к этому свойству. С незначительными изменениями должно работать для ваших целей.
Посмотрите, хотите ли вы этого:
Ваш класс должен быть унаследован от другого класса (Super class), который определяет ваши необходимые методы.
class Super {
public function getId(){
return $this->list["id"];
}
public function getName(){
return $this->list["name"];
}
}
class Called extends Super {
var $list = array();
function __construct() {
$this->list["name"]="vivek";
$this->list["id"]="1";
}
}
$instance=new Called();
echo $instance->getId(); // 1
echo $instance->getName(); //vivek