Nilfisk 集团总部位于丹麦,在 40 多个国家和地区设有销售公司。Nilfisk 结合强大的分销商网络,在全球 100 多个国家销售产品。力奇的生产设施位于亚洲、欧洲和美洲。
我们与2020年2月开始接手力奇清洁微信公众号,在此之前该公众号每月并没有规律的推送,各项公众号数据也非常的惨淡。
最近这些年,一个新的名词越来越多地出现在PHP开发领域的各种技术文献和大家热议的话题中:Laravel。
什么是Laravel?这个念起来有些拗口的单词(官方发音是/’lærəvəl/),简而言之,就是一款PHP开发框架。我们可以先去它的官方主页看一眼:https://laravel.com/。虽然PHP世界向来都是百花齐放,但这新颖的Logo和清爽脱俗的页面设计,以及映入眼帘“beautiful”,“artisans”等字眼,甚至不太容易让人一下子联想到这是一款给程序员使用的产品。
说起PHP框架,大概每个程序员都能如数家珍:CodeIgniter、CakePHP、Yii、Symfony、Zend Framework,当然还有国产的ThinkPHP, 不一而足。但是Laravel这些年到底有多火?我们去Google Trends上看一下上述几款同类产品的热搜程度或许能有一些粗略的概念。
这是过去12个月的数据,红黄绿紫色的曲线分别代表CodeIgniter、CakePHP、Yii和Zend Framework,而蓝色线代表Laravel,已经是“高高在上”了,而且还在呈持续上升之势。
如果把时间区间再往前推到过去5年(Laravel诞生至今不过短短五年),蓝线的走势就有点让人望而生畏了,可以说几乎没有任何一款PHP框架产品的流行趋势可以与之匹敌。
把眼光从时间纬度转向空间维度,结果同样让人惊讶。
可以看到,整个南北美洲、欧洲以及亚太地区都已经几乎被蓝色覆盖了,而且要知道这是Google的数据,其中关于中国大陆的数据很可能是极不准确的。实际上在中国,Laravel也早已进入大家热议的话题,甚至有很多已经抛弃PHP的程序员因为Laravel而重回PHP的怀抱。那么,Laravel到底有些什么样的魔力呢?
其实,Laravel和诸多PHP甚至其他编程语言框架一样,在逻辑架构上并没有什么独特之处。
(图片来源:http://laravelbook.com/laravel-architecture/)
从上图可以看到,Laravel就是一个典型的单入口MVC架构。首先,路由机制将用户请求的路径映射到一个特定的控制器,控制器执行业务逻辑,期间会与模式(数据库)发生交互,不外乎CRUD四种操作,并最终调用相应的视图将结果渲染出来,发送给客户端。整个过程与我们熟知的其他应用框架何其相似?
打开Laravel的官方首页,最显眼的是这样两行字:
Love beautiful code? We do too.
(喜欢漂亮的代码吗?我们也是。)
The PHP Framework For Web Artisans
(给Web匠人们用的PHP框架)
这两句话大概精确地概括了Laravel的一切追求。除了文档之外,Laravel的代码本身是自解释的,写代码和写文章一样直观。百度百科的Laravel页面上的这个例子非常直观地说明了这一点:
代码A:$uri = Uri::create(‘some/uri’, array(), array(), true);
代码B:$url = URL::to_secure(‘some/uri’);
假设代码A和代码B做的是同一件事,你会选择哪个?答案毫无疑问是后者——上面那句的后半段让人摸不着头脑,而下面那句简直就像英语对话一样直接。试想整个框架的语言都是这种风格的,能让人不爱么?
Laravel的这个优点很容易让人联想到Ruby当年的流行,是的,真正打动人的优点不要多,一个足矣。
Eloquent相当于Ruby on Rails里面的ActiveRecord,就是一个数据抽象层,可以让开发者在完全忘掉SQL的情况下轻松完成数据的查、删、增、改。具体的代码也是可爱到无以复加:
// 获取所有Task数据
$tasks = Task::all();
// 获取id为1的Task
$task = Task::find(1);
// 更新id为1的Task
$task = Task::find(1);
$task->title = 'Put that cookie down!';
$task->save();
// 创建一个新的Task
Task::create([
'title' => 'Write article'
]);
// 删除id为1的Task
Task::find(1)->delete();
Laravel支持命令行扩展包安装工具Composer,可以像很多开源软件一样通过命令行安装扩展包。Laravel还有自己的命令行管理工具,名字也很任性,就叫做Artisan,Artisan包含很多常用的项目管理工具,使用Artisan比手工操作和界面操作都来得更高效更可靠。
Laravel的模版引擎有个很酷的名字叫作Blade,主题和前端开发者几乎无需学习PHP就可以轻松掌握。Blade的亮点之一是可以嵌套,从而增强代码的重用性。关于Blade的更多信息可以在这里查看:https://laravel.com/docs/5.3/blade
对于非网页前端,Laravel有提供RESTful资源的控制器,更多信息可访问:https://laravel.com/docs/5.1/controllers#restful-resource-controllers
Laravel还有一个前端好伙伴叫做Backbone,可以有效地避免意大利面条式的代码(spaghetti code),关于Backbone的更多信息可访问:http://backbonejs.org/
我觉得Laravel首先会让我们反思我们的工作。有一点是肯定的,我们都喜欢简单而不是复杂的东西。我们使用框架、使用CMS,归根结底还是为了简化我们的工作。比如我们前段时间的一个简单的内部项目,我就建议团队抛弃任何CMS,使用纯HTML来完成开发。和我预期一样,开发效率并不比使用CMS低,而且纯HTML占用更少的服务器资源,网站快如飞。那么,我们使用CMS的意义到底在哪里呢?我们是使用所掌握的技术来为项目服务,还是为技术所限制甚至摆布?这是值得我们去思考的。
前端和UI设计师们可能会觉得这离自己有点远,但Laravel所崇尚的从整体到细节的完美追求,同样是我们每个人学习的榜样,更不要说Laravel诸多旗下网站(laracasts,Forge,Envoyer,LaraAdmin等),本身的UI和交互设计以及前端就是非常值得学习的。(参见:http://codecondo.com/15-websites-built-with-laravel)
最后,如果一定要扯一些个人情节的话,Laravel诞生在纽约,而且Laravel的UI设计团队和我们纽约办公室相去不远,这也许是我个人觉得她亲切的原因之一吧。