【问题标题】:Basic question about Magento Programming关于 Magento 编程的基本问题
【发布时间】:2010-12-07 05:32:58
【问题描述】:

我在 Magento 中发现了很多代码 sn-ps 比如

$variable_name = Mage::app()->function_name();

这是一个例子

$websites = Mage::app()->getWebsites(true, true);

这个函数调用(调用?)做什么?语法不熟悉,我需要一些基本解释,以便更好地跟踪代码。

【问题讨论】:

    标签: php oop api magento


    【解决方案1】:

    这实际上是两个独立的方法调用。

    $result = Mage::app()->getWebsites();
    

    第一个是

    $o = Mage::app();
    

    这是在“class Mage”上调用static method app,可以在

    中找到
    app/Mage.php
    

    :: 运算符调用静态类方法。如果你不明白那是什么意思,就想“左边的类,右边的方法,你不能在方法中使用 $this 变量”。

    所以,这个方法调用返回一个对象,几乎可以肯定是Mage_Core_Model_App,它位于

    app/code/core/Mage/Core/Model/App.php
    

    所以上面的一行可以改写为

    $o = Mage::app();
    $result = $o->getWebsites();
    

    希望这有助于揭开神秘面纱。

    【讨论】:

      【解决方案2】:

      为自己准备一个好的 IDE,例如 Eclipse with PDT。它的代码完成工具是天赐之物。

      例如,当您键入 MA 时,它会自动将其补全为 Mage:: 并提供静态函数列表,包括 app()。之后键入 ->GETW 它会显示另一个函数列表,getWebsites() 将在您键入时被选中,当突出显示时将解释所需的参数以及解释其作用的概述(从 PHPDoc 收集)。

      如果你有这样的工具,你永远不会问“这个函数调用实际上是做什么的??”在网站上。

      【讨论】:

        【解决方案3】:

        您可能会看到 zend 框架中的“神奇的 getter 和 setter”。我知道这让我有点困惑。在 zend 框架中,您可以调用获取和集合,而无需在任何地方定义实际函数,如果没有函数定义,那么它只会将您分配给调用集合的对象附加任何内容。

        【讨论】:

          【解决方案4】:

          您正在设置一个变量以包含函数返回的任何内容。要查看此方法究竟返回什么,您必须转储该值或检查该方法。从外观上看,它会将值设置为包含网站对象,以后可以通过此变量进行迭代或访问

          【讨论】:

          • 我需要知道 Mage::app()->getWebsites 的控制流程,即它在做什么 Mage::app() 以及之后调用的函数实际上是在哪个类中实现的??
          • 您始终可以使用 grep 查找方法: grep ' getWebsites' app/code -rsn 以查看定义方法的位置。 Mage::app() 表示 app() 方法的单例执行并在返回的对象上调用 getWebsites() 方法
          猜你喜欢
          • 2011-02-22
          • 2013-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多