Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakePHP复制函数还是使用外部控制器?(干式发行)_Php_Cakephp_Dry_Cakephp Model_Code Duplication - Fatal编程技术网

cakePHP复制函数还是使用外部控制器?(干式发行)

cakePHP复制函数还是使用外部控制器?(干式发行),php,cakephp,dry,cakephp-model,code-duplication,Php,Cakephp,Dry,Cakephp Model,Code Duplication,我有3个控制器,令牌、存储和用户 令牌与其他两个模型相关,每个令牌都有一个所有者类型和所有者id 在User_controller和Store_controller中都有一个称为EmailTokenToUser的函数,它将激活链接发送给注册用户或商店的人 我的问题是:我应该将函数传递给令牌吗? 如果是,我该如何称呼它?(requestAction是个坏主意,只为一个函数创建一个对象.) 有什么想法吗?要重用代码,应该将代码传递给令牌的模型,而不是控制器。这是一种方式,而不是唯一的方式。要使用它,

我有3个控制器,
令牌、存储
用户

令牌与其他两个模型相关,每个令牌都有一个所有者类型和所有者id

在User_controller和Store_controller中都有一个称为EmailTokenToUser的函数,它将激活链接发送给注册用户或商店的人

我的问题是:我应该将函数传递给令牌吗? 如果是,我该如何称呼它?(requestAction是个坏主意,只为一个函数创建一个对象.)


有什么想法吗?

要重用代码,应该将代码传递给令牌的模型,而不是控制器。这是一种方式,而不是唯一的方式。要使用它,即使在控制器内部也不应该使用requestAction(同样,使用requestAction也应该如此)。你可以用两种方法来做

App:import('model', Token');
Token::myFunction($args);

或者(如果从控制器内部冷却,也可以使用)

这是如果您将它放在函数的令牌模型中。如果不是的话,用控制器的方式,你应该这样做

App:import('controller', 'Tokens');
TokensController::myFunction($args);


希望它能帮助你:)

太好了。有一个问题:如果模型是相关的,我应该加载它吗?我能不能只
$this->LocalModel->RelatedModel->function()
?可以,因为它已经被加载了。应该行得通
$this->loadModel('Token');
$this->Token->myFunction($args);
App:import('controller', 'Tokens');
TokensController::myFunction($args);
App:import('controller', 'Tokens');
$token = new TokensController();
$token->myFunction($args);