这可能不是最佳实践--然而,我的函数将是相当全面的,并由其他控制器使用,因此我想将它们与控制器的公共类分开。(最佳实践是什么?我只想将函数加载到特定的页面/控制器。)
Laravel 7
class HomeController extends Controller
{
function add($a, $b) {
print($a + $b);
}
public function show($id) {
add(1,2)
}
}
发布于 2020-06-08 06:22:27
你不应该在控制器中执行逻辑。
我建议您创建一个Calculator
文件夹,例如,您可以在其中存储和,如下所示:
控制器:
declare(strict_types=1);
namespace App\Controller;
use App\Calculator;
final class HomeController extends Controller
{
// $id not needed, although, if you are going to use it,
// try to declare the type!
public function show() {
return (new Calculator())->add(1, 2);
}
}
和计算类:
declare(strict_types=1);
namespace App\Calculator;
final class Calculator
{
public function add(float $firstOp, float $secondOp): float
{
return $firstOp + $secondOp;
}
}
PS:请勿在控制器中打印,您必须遵循SRP (单一责任原则)!:)例如,您可以将show()
方法中的return (new Calculator())->add(1, 2);
替换为dd(new Calculator())->add(1, 2));
。
发布于 2020-06-08 06:16:10
似乎是一种使用特征的解决方案,这在Laravel中是很常见的做法。
namespace App\Http\Controllers;
use App\Traits\MySpecialFunctions;
class HomeController extends Controller
{
use MySpecialFunctions;
}
namespace App\Traits;
trait MySpecialFunctions {
function add($a, $b) {
print($a + $b);
}
public function show($id) {
add(1,2)
}
}
https://stackoverflow.com/questions/62252254
复制相似问题