Before you develop a marketing strategy, you should ask yourself what your business strategy is. Your marketing strategy should be based on your business strategy and brand strategy. Your marketing strategy is not equal to your business strategy.
PHP框架世界的新宠——Laravel
最近这些年,一个新的名词越来越多地出现在PHP开发领域的各种技术文献和大家热议的话题中:Laravel。
什么是Laravel?这个念起来有些拗口的单词(官方发音是/’lærəvəl/),简而言之,就是一款PHP开发框架。我们可以先去它的官方主页看一眼:https://laravel.com/。虽然PHP世界向来都是百花齐放,但这新颖的Logo和清爽脱俗的页面设计,以及映入眼帘“beautiful”,“artisans”等字眼,甚至不太容易让人一下子联想到这是一款给程序员使用的产品。
Laravel有多火?
说起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到底好在哪里?
其实,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
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();
命令行工具Composer和Artisan
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设计团队和我们纽约办公室相去不远,这也许是我个人觉得她亲切的原因之一吧。