【问题标题】:Want to create a custom function想要创建自定义函数
【发布时间】:2013-07-03 12:45:14
【问题描述】:

我正在开发一个 CakePHP 2.x .. 我想创建一个特殊的类,我想在其中创建函数,以便我可以从其他控制器调用函数。

例如这个函数

function replace_dashes($string) {
   $string = str_replace("-", " ", $string);
  return $string;
     } 

所以每当我想在其他控制器中使用该函数时,我都可以调用它或者也可以传递参数......

我想在某个类中实现所有像这样的原始函数。我如何在 CakePHP 中做到这一点?

【问题讨论】:

  • 你想用辅助方法创建一个类吗?为此使用 /Lib 中的库。

标签: cakephp cakephp-2.0 cakephp-2.1


【解决方案1】:

没那么难。只需在 /Lib 中创建一个文件,最好使用像“Utility”这样的命名空间:

/Lib/Utility/Utility.php

并把你的方法放在那里:

class Utility {
    public static function replaceDashes($string) { ... }
}

然后你可以在你的应用中的任何地方使用它:

//App::uses('ClassName', 'Package'); and our Package is the Folder "Utility" in /Lib
App::uses('Utility', 'Utility');
$result = Utility::replaceDashes($input);

https://github.com/dereuromark/tools/blob/master/Lib/Utility/Utility.php 及其针对现实生活场景/示例的测试用例。

别忘了写几个测试用例。

【讨论】:

  • 如果有自然命名空间,“Lib”目录实际上是不必要的。即App/Utility/Utility.php 更合乎逻辑(Cake 在作为后备的 libs 文件夹之前检查这一点)。
  • 我想这又回到了偏好。如果您有 20 个命名空间,则 APP 文件夹可能会变得越来越不可读。我个人喜欢坚持使用 /Lib。但是,是的,这是一个非常有效的观点,这也是可能的。
【解决方案2】:

在你的 AppContoller.php 中创建这个函数

public function __replaceDashes($string) {
       $string = str_replace("-", " ", $string);
       return $string;
 } 

在任何控制器中调用它

$str = "anything";
$your_output = $this->__replaceDashes($str);

您可以制作自己的组件。

【讨论】:

  • 好吧,我不想把它写到应用程序控制器中,因为我已经有很多重要的代码了
  • 然后为您的自定义函数制作一个组件或使用 lib
  • 我不知道该怎么做......你能给我一个示例或任何有用的链接
  • 不知道如何制作组件
猜你喜欢
  • 1970-01-01
  • 2023-01-07
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多