Php 如何制作一个操纵实例的辅助函数?
我正忙于尽可能多地学习php框架 现在我有一个满是路线的文件。路线采用这种一般形式Php 如何制作一个操纵实例的辅助函数?,php,Php,我正忙于尽可能多地学习php框架 现在我有一个满是路线的文件。路线采用这种一般形式 $bootstrap->router->add('/home', ['controller' => 'home', 'action' => 'index']); 因此,“routes”文件不是一个类,它只是一个文件,我将其包含在index.php页面的$bootstrap=new bootstrap($router)下面 如您所见,要添加路由,我将其添加到实例化的$bootstrap对象
$bootstrap->router->add('/home', ['controller' => 'home', 'action' => 'index']);
因此,“routes”文件不是一个类,它只是一个文件,我将其包含在index.php页面的$bootstrap=new bootstrap($router)下面代码>
如您所见,要添加路由,我将其添加到实例化的$bootstrap对象中,该对象本身有一个实例化的->router对象,我在其中调用'add()'方法
现在我想通过写这样的东西使添加路由变得更容易
route('/home', ['controller' => 'home', 'action' => 'index']);
问题
具体怎么做还不清楚。。。我甚至不确定这是否已经完成。我已经尝试创建一个“helpers/routeHelper文件”,但这会使我的请求超出对象范围
…所以我有点困惑,如何在面向对象代码中实现一个平面旧辅助函数
非常感谢。匿名功能
如果您愿意在该路线(…
行)的开头添加$
:
$route = function($path, $options) use ($bootstrap) {
$bootstrap->router->add($path, $options);
}
会有用的
全局$bootstrap
否则,将引导对象引入路由函数将是肮脏的:
function route($path, $options) {
global $bootstrap; // <-- i don't like this
$bootstrap->router->add($path, $options);
}
在主程序中,只需在该阵列上循环:
foreach($routes as $path => $options) {
$bootstrap->router->add($path, $options);
}
这是我脑海中突然出现的三种解决方案…匿名函数
如果您愿意在该路线(…
行)的开头添加$
:
$route = function($path, $options) use ($bootstrap) {
$bootstrap->router->add($path, $options);
}
会有用的
全局$bootstrap
否则,将引导对象引入路由函数将是肮脏的:
function route($path, $options) {
global $bootstrap; // <-- i don't like this
$bootstrap->router->add($path, $options);
}
在主程序中,只需在该阵列上循环:
foreach($routes as $path => $options) {
$bootstrap->router->add($path, $options);
}
这是我脑海中突然出现的三种解决方案…像这样
if(!function_exists( 'route' ) ){
function route( $path, $params ){
$bootstrap = ''; //?
$bootstrap->router->add($path, $params);
}
}
当然,我不知道$bootstrap是从哪里来的,所以很明显,您需要它。您可以将它作为参数传入,但如果可能,最好在函数内部初始化它。像这样
if(!function_exists( 'route' ) ){
function route( $path, $params ){
$bootstrap = ''; //?
$bootstrap->router->add($path, $params);
}
}
当然,我不知道$bootstrap是从哪里来的,所以很明显,你会想把它放在那里。你可以把它作为一个参数传递进来,但如果可能的话,最好在函数内部初始化它。嗯…放一个名为route maybe的函数?嗯…放一个名为route maybe的函数?非常有趣,非常感谢你展示做这件事的不同方法,如此有趣的东西!就我个人而言,我更喜欢“数组中的定义”版本这是一个很好的解决方案…看起来更干净,消化所有这些好信息需要一段时间!非常有趣,非常感谢您展示了不同的方法,非常有趣的东西!就个人而言,我更喜欢“数组中的定义”版本。;(o)这是一个很好的解决方案。。。看起来干净多了,消化所有这些好信息需要一段时间!您可能需要执行}else{
和错误检查以确定函数是否存在,但这取决于您的框架。谢谢,我们会考虑这一点。您可能需要执行}else{
和错误检查以确定函数是否存在,但这取决于您的框架。谢谢,我们会考虑这一点。