【问题标题】:Simpler than $this->variableObject比 $this->variableObject 更简单
【发布时间】:2016-08-21 01:52:18
【问题描述】:

每次我在控制器/模型/其他任何地方调用某些东西时,我都非常讨厌输入 $this->database$this->otherVarOrFunc
是否有某种 OOP 技巧可以使用,例如 $database 而不是$this->database 在我的控制器的每个功能中?

我在 MVC 级别上定义了 BaseController 的结构,并为其他所有与类相关的东西定义了 BaseObject。这两个包含 5 到 20 个对象变量(取决于应用程序大小),如果不需要输入 $this->,我会更满意。

它对整体性能有负面影响吗?
提前致谢

【问题讨论】:

    标签: oop model-view-controller global-variables this


    【解决方案1】:

    在每个类函数的开头,您可以为引用$this的函数定义一个局部变量。

    例如:

    class a {
        function __construct() {
            $this->aa = "hey";      
        }
        public $aa;
        public function aaa() {
            $ab = &$this->aa;
            $this->aa = "hey1";
            echo $ab;
        }
    }
    $b = new a;
    $b->aaa();
    


    现在在整个函数中,使用$ab 而不是$this->aa

    【讨论】:

    • 嗯,当然,但它需要为每个变量的每个函数多写 1 行。我不确定它是否会加快进程...
    • 我不认为使用引用会减慢任何速度,但它可以让您不必每次都输入$this->
    • 你是对的!我还有一个问题:如果我使用 $this->database 初始化类中的新对象,并且新对象的 counstruct 具有 ($database) 作为参数,我应该选择 $obj = new someObject($db) 还是 new someObject(&$ D b)?什么应该更快?要快多少?
    • 您似乎无法通过传递参考来获得性能。见here
    • 在新的php版本中,实例默认通过引用传递给函数。
    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2011-11-21
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多