如何调用php中不存在的类方法?

如何调用php中不存在的类方法?,php,oop,magento,magic-methods,overriding,Php,Oop,Magento,Magic Methods,Overriding,我只想创建一个函数,就像magento中的getFieldname()一样 例如: 在Magento中 getId()-返回ID字段的值 getName()-返回Name字段的值 我怎样才能创建这样的函数?在这种情况下,请帮助我 我想做的就像下面的代码一样 Class Called{ $list=array(); function __construct() { $this->list["name"]="viv

我只想创建一个函数,就像magento中的
getFieldname()
一样

例如:

在Magento中

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();

看看这是否是您想要的:

您的类应该从定义所需方法的另一个类(超类)继承

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

检查
Varien\u对象的实现
,我认为
\u调用
方法可能就是您想要的


这将基本上“捕获”任何不存在的方法调用,如果它们在shape
$This->getWhateverField
中,将尝试访问该属性。只需稍作调整就可以达到您的目的。

您可以使用魔术方法
\u调用
解决您的问题

<?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();

?>

有关
\u call
的更多信息,请访问:


请分享你的具体情况。您想重写“超级类方法”还是只重写“定义的函数”?看看这个:可能是Nope的复制品。。数组将是动态的。。。所以我不能像您那样编写@Babak t函数,而您需要的不是方法重写!被称为“动态方法创建”。