【问题标题】:CakePHP a class that can be used anywhere?CakePHP 一个可以在任何地方使用的类?
【发布时间】:2011-04-29 17:20:51
【问题描述】:

我有一个多域网站。根据域,网站需要做出相应的行为。

我创建了一个名为 CompanyInfo 的助手,它有 name()phone()email() 等方法.

根据您所在的域,它会返回正确的信息。

例如,如果我需要显示用户拨打的电话号码,我会使用$this->CompanyInfo->phone(),它会根据域为用户显示正确的电话号码。

好的,这一切都很好,但并不真正相关。真正的问题是,我需要的不仅仅是视图中的这些信息。助手只是为了查看。如果我想从控制器访问这些信息,我需要创建一个组件来完成它。

我真的不想让 Helper 和 Component 做同样的事情。我宁愿让一个班级来处理它,而不是复制和粘贴逻辑。

那么,拥有一个可以从控制器或视图甚至模型访问的方法的类的最佳方式是什么?

【问题讨论】:

    标签: cakephp cakephp-1.3


    【解决方案1】:

    您需要显示的只是这种静态信息(姓名、电话号码、电子邮件等)吗?为什么不直接将它们添加到core.php 的配置中?

    类似

    # in core.php
    Configuration::write('Company.name', 'Acme Corp.');
    Configuration::write('Company.email', 'joe@acme.com');
    

    然后您可以在任何需要使用的地方获取此信息

    Configuration::read('Company.name');
    

    【讨论】:

      【解决方案2】:

      您可以在 app_controller 中定义此变量,然后在您的任何控制器中轻松使用这些变量,因为仅从那里设置这些变量。 在您的构造类中调用此函数。 我认为这会解决你的问题。

      【讨论】:

        【解决方案3】:

        您可以通过这种方式从任何地方访问模型类: $companyInfoModel = ClassRegistry::init('CompanyInfo'); $phone = $companyInfoModel->phone();

        【讨论】:

          【解决方案4】:

          a) 您可以为此使用 cake1.3 中的库

          b) 静态模型方法,您可以将内容传递给它并返回预期值

          echo Model::phone($data)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-08-22
            • 2020-02-10
            • 1970-01-01
            • 2013-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多