我在视图和控制器中也需要一个字符串操作类!我看到 cake 在这种情况下重用组件和帮助程序中的代码,我认为这会破坏 OOP 逻辑(例如 Session->read)!
我没有这样做,而是创建了一个在 StringsHelper 和 StringsComponent 中导入的供应商类。然后我创建了一个相同的函数来实例化 Vendor/String 类并从相应的函数返回结果。这不是完全继承并且仍然是多余的,但是如果我更改类中的代码,它会随处更改。
有一个更好的方法吗?
我在视图和控制器中也需要一个字符串操作类!我看到 cake 在这种情况下重用组件和帮助程序中的代码,我认为这会破坏 OOP 逻辑(例如 Session->read)!
我没有这样做,而是创建了一个在 StringsHelper 和 StringsComponent 中导入的供应商类。然后我创建了一个相同的函数来实例化 Vendor/String 类并从相应的函数返回结果。这不是完全继承并且仍然是多余的,但是如果我更改类中的代码,它会随处更改。
有一个更好的方法吗?
您不需要将此类类包装在 Helper 或 Component 中。
APP/Lib
您可以简单地使用静态方法创建一个类,然后像 Mark 提到的那样将其放入。
<?php
class StringTool{
public static function manipulate($string){
...
}
}
然后在你需要的任何类中使用它,无论是在组件、助手、模型等中。
<?php
$s2 = StringTool::manipulate($s1);
我以前问过同样的问题。最好的地方是在 app/Libs 中,你可以在其中放置一个带有静态辅助函数的类,这些函数可以在应用程序的任何地方使用,包括控制器和视图。
使用导入类App::import('Lib', 'YourClass')