Laravel简单使用

2017-03-17

  这段时间需要使用PHP写一些公司内部的网页,还涉及到数据库和文件操作,实在不想用原生的PHP来写,就捣鼓里一下Laravel,这个东西被评价为简单优雅。我一直是对编程世界里的所谓“优雅”这样的评价有意见,工程上的东西,首先要保证可工作,其次是能够稳健,再次才是美观。一味追求“优雅”,这可是本末倒置。总觉得,做Web开发中,多有这样的炒概念的行为。还是要务实一些。
  PHP 5.3引入了namespace,终于有点想把PHP完备起来做大型项目的样子了。没有namespace,各种名字用起来简直就是灾难。而且,PHP的namespace和目录结构间并没有强制的关联,就像Java那样,所以,你并不一定能够把namespace和一个文件准确的对应起来。还好,这也不是什么大的问题。再有就是PHP的代码加载机制,到目前为止都有好几个版本的标准了,各种框架之间不一样,一些厂商提供的SDK支持的标注也不一样,会有一定的麻烦。关于第三方库的引入机制,PHP终于开始走上正轨了,composer的使用也还是很方便的(前提是学会科学的上网)。
  关于Laravel,简单的说一下这段时间的使用感受吧。
  路由机制很好用,各种写法都支持,这让我想起来当年做Java EE开发,需要在server.xml里写每一条url对应的action。那真是痛苦。后来Struts2和Spring都有了注解的方式,一下子就解决了。在PHP开发中也是一样,还是尽量采用惯例的方式,url的名字直接对应action的名字,不要显式的url映射。
  多语言支持。Laravel在这一点做的还不错,我还是花费了半天时间才把流程搞清楚,在开发的网站上加入了这个功能,而且采用的思路也是符合RESTful风格的,在domain.com/下直接用一层名字空间来表示语言,在路由层次,把这个层次给去除掉即可。翻译文件也很简单。
  我不大喜欢Laravel 的artisan,代码生成技术是个好东西,能节省时间,但是,就如同MFC、Qt、Android、iOS里界面开发技术一样,都有拖控件来做界面的工具,然并卵,真正做开发时没有人会用的。我所认为的框架,应该把90%的精力集中在运行流程、架构、模块和核心功能上,而不是关注这些细枝末节的工具,这个东西是可有可无的。在文档中做介绍的时候,也不应该引入这些让人分神的概念。
  关于provider,这是很好的设计。我当前做的东西只是一个小的内部工具,并没有相关的开发工作。倒是,AWS 的SDK,也是作为一个Provider。这个东西以后再分析吧。
  关于登录,Laravel自己提供了默认的login,resetPassword,register等url映射和Controller,我觉得这个不应该,即使你提供了,大部分开发者也还是需要重新写,框架应尽量的简洁,去掉任何可以被删除的东西。
  关于数据库,Laravel也提供了自己的ORM机制,挺好用的,感觉Laravel也遵循“惯例大于配置“,比如Eloquent中latest() 就需要对应的数据表需要有 create-at字段,但是这个也是可以使用自定义的名字,只需要覆写Model父类的const CREATED_AT = 'post_date';     const UPDATED_AT = 'post_modified'; 即可。
  

  1. 《Laravel框架关键技术解析》
  2. http://us3.php.net/manual/zh/language.namespaces.rationale.php
  3. https://laravel.com/docs/5.4/providers
  4. http://stackoverflow.com/questions/24404474/change-name-of-laravels-created-at-and-updated-at

老笔记总结

如果有任何意见,欢迎留言讨论。


[ 主页 ]
COMMENTS
POST A COMMENT

(optional)



(optional)