最近,在使用Laravel写东西,因为框架本身的设计理念的不同,刚从ThinPHP3切换到Laravel5,感觉还是很怪的,各种不习惯,但是一旦写过一些代码,发现Laravel真的非常好用。我一直觉得TP中的公共函数是一个很好的设计,因为我们只需要在functions.php中对共用的函数进行封装,然后就可以在全局直接进行调用了。其实Laravel中也有类似的功能的,比如说助手函数,类似于session()等函数,这些助手函数也是全局可以调用的,非常的方便。
在这里总结一下,两者之间的差别以及相同点。
TP3系列中functions.php文件默认其实是空文件,很好找。我们可以直接封装代码。
Laravel5系列中的path/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php。该文件中封装的函数就是全局函数,可以在任意区域进行调用。
但是,Laravel中的helper.php中已经封装好了很多的内置助手函数,一般不建议直接在该文件中进行自己函数的封装,而是采用新创建一个文件,里面放置需要封装的函数。
这里有一点需要说明:全局函数的实现是依靠在初始化的时候,将helps.php或者functions.php直接进行了加载。而Laravel中path/bootstrap/autoload.php中可以定义在初始化的时候加载什么文件。在默认的情况下,有以下一条加载配置:
require __DIR__.'/../vendor/autoload.php';复制代码
同样,我们也可以加载其他的文件,比如以下的加载操作:
require __DIR__.'/../app/Common/functions.php';复制代码
这样,我们就可以直接在这个加载的文件中直接封装需要的函数,这样也就实现了我们的需要。
另外,有人还推荐了另外一种方法,就是使用一个控制器,在控制器中的类中封装静态的方法,在需要的地方,引入所需的控制器,也可以实现我们的需求。