1

我在视图和控制器中也需要一个字符串操作类!我看到 cake 在这种情况下重用组件和帮助程序中的代码,我认为这会破坏 OOP 逻辑(例如 Session->read)!

我没有这样做,而是创建了一个在 StringsHelper 和 StringsComponent 中导入的供应商类。然后我创建了一个相同的函数来实例化 Vendor/String 类并从相应的函数返回结果。这不是完全继承并且仍然是多余的,但是如果我更改类中的代码,它会随处更改。

有一个更好的方法吗?

4

2 回答 2

2

您不需要将此类类包装在 Helper 或 Component 中。

APP/Lib您可以简单地使用静态方法创建一个类,然后像 Mark 提到的那样将其放入。

<?php
class StringTool{

  public static function manipulate($string){
   ...
  }

}

然后在你需要的任何类中使用它,无论是在组件、助手、模型等中。

<?php
$s2 = StringTool::manipulate($s1);
于 2012-11-26T17:17:49.097 回答
0

我以前问过同样的问题。最好的地方是在 app/Libs 中,你可以在其中放置一个带有静态辅助函数的类,这些函数可以在应用程序的任何地方使用,包括控制器和视图。

使用导入类App::import('Lib', 'YourClass')

CakePHP - 在我的应用程序结构中放置自定义实用程序类的最佳位置在哪里?

于 2012-11-27T13:11:47.723 回答