Как вызвать методы класса, которые не существуют в php?

Я просто хочу создать функцию так же, как 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();

3 ответа

Решение

Вы можете использовать магический метод __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

Проверьте выполнение Varien_Object, __call метод, вероятно, то, что вы ищете, я думаю. http://freegento.com/doc/de/d24/_object_8php-source.html

Это будет в основном "захватывать" любые несуществующие вызовы методов, и если они в форме $this->getWhateverField, будет пытаться получить доступ к этому свойству. С незначительными изменениями должно работать для ваших целей.

Посмотрите, хотите ли вы этого:

Ваш класс должен быть унаследован от другого класса (суперкласса), который определяет ваши необходимые методы.

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
Другие вопросы по тегам