我只想创建一个函数,就像在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();
您可以使用魔术方法__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
,则将尝试访问该属性。稍微调整一下就可以了。
看看这是否是您想要的:
您的类应该从定义所需方法的另一个类(超级类)继承。
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