PHP-对象的方法
我是一名Java开发人员,试图理解这种PHP行为。我已经执行了以下方法:PHP-对象的方法,php,oop,magento,magento-1.7,Php,Oop,Magento,Magento 1.7,我是一名Java开发人员,试图理解这种PHP行为。我已经执行了以下方法: error_log(get_class($a) . "\n", 3, "c:\my-errors.log"); error_log(print_r(get_class_methods($a), true) . "\n", 3, "c:\my-errors.log"); 哪个印刷品 Mage_Catalog_Model_Product Array ( [0] => getStoreId ...
error_log(get_class($a) . "\n", 3, "c:\my-errors.log");
error_log(print_r(get_class_methods($a), true) . "\n", 3, "c:\my-errors.log");
哪个印刷品
Mage_Catalog_Model_Product
Array
(
[0] => getStoreId
...
[90] => getWeight
[91] => getOptionInstance
[92] => getProductOptionsCollection
[93] => addOption
[94] => getOptionById
[95] => getOptions
[96] => getIsVirtual
...
[182] => flagDirty
)
但下一行执行的方法(没有错误)显然不在我首先打印的方法列表中:
$a->getOption()
那么,这怎么可能呢?我怎么知道一个对象的所有方法?有没有办法知道哪个文件将执行“下一行代码”——因为整个项目中都有几个“getOption”函数,我无法确定将执行哪一个
也许这可以帮助你,我正在使用Magento 1.7,我正在讨论的代码是
\app\code\core\Mage\Bundle\Model\Product\Type.php@shakeSelections
非常感谢 您要查看的PHP信息是。短版本-如果在PHP对象上调用不存在的方法,则调用
\u call
方法,使PHP开发人员有机会实现元编程功能
你感兴趣的Magento特性是神奇的setter和getter。从Varien_对象
(通常是模型和块)继承的Magento对象具有神奇的get
和set
方法,使用上述\u调用
方法实现
您可以使用
$array = $object->getData();
这个数组可能看起来像
array(
'foo' =>'bar',
'another_field' =>'baz'
)
您还可以访问foo
和另一个_字段
的值,并调用前面提到的magic getter
echo $this->getFoo();
echo $this->getAnotherField();
您还可以使用magicsetter设置新值
$this->setFoo('no longer bar');
$this->setAnotherField('no longer baz');
二传手也可以连锁
$this->setFoo('again!')->setAnotherField('back to baz');
如果未设置数据属性,getter将返回null
。也就是说只要你看到有人打电话给你
$object->get...
$object->set...
返回的可能来自真实方法,也可能来自神奇的数据设置和获取工具