我有一个管理员控制器,我想利用其他控制器中的功能(这些功能不代表有人会在浏览器中加载的页面),但它不能利用这些功能,因为其他控制器中的功能是私有的。它们是私有的,因为我不希望公众访问它们。有没有办法让控制器功能不被公众访问而不将该功能设为私有或受保护?
答案 0 :(得分:4)
public function __blah(){
// function that can't be accessed from outside, but can be called from other functions
}
答案 1 :(得分:2)
根据我在Piotr给你的答案评论中所读到的内容:
您不使用管理员控制器。您想使用管理员前缀: http://book.cakephp.org/view/950/Prefix-Routing
身份验证: http://book.cakephp.org/view/1250/Authentication
如果你打电话 - 这就是你的评论听起来如何 - 另一个控制器你在MVC框架中做了一些完全错误的事情。如果它应该是可重用的代码,那么它应该进入组件,如果它是关于管理操作使用前缀路由和admin_ *方法,auth组件和受保护的方法,你称之为“帮助”方法。
答案 2 :(得分:0)
答案 3 :(得分:0)
我看到三种可能的解决方案(它们也可以合并):
第一个解决方案是将您要重用的代码移动到components(如burzum所述)。
第二种解决方案取决于您的代码。您可能在控制器中执行应在模型中完成的操作。在这种情况下,将相应的代码移动到模型中。
第三种解决方案是将您想要重用的代码放入普通的旧PHP类和load them as vendor files中。