• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
laravel 学习笔记——起点

laravel

本系列文章主要是方便初学 laravel 的人入门,帮一些朋友认识到如何入门、如何学习 laravel,同时补充一些忽略过的基础知识。

Laravel 给了我学习新知识的一个契机,让我更早的接触更多的东西。我现在这个博客就是用 laravel 编写的。

刚学习 laravel 其实是一个痛苦的过程,不过痛苦过后,世界大不一样。原因就是造成痛苦的,不是 laravel 难,而是思想的陈旧带来的。laravel 本身也没有运用什么超前的理念,但即使是炒的旧饭,也比馊了的来得美味一些。既然旧饭要炒一下,那就得费点小小的力气。剩饭也香啊,尤其是撒了葱花之后sweat_smile sweat_smilesmirk。

学得越多,就应该记下来,这一系列笔记,也希望能够帮助大家。

由于网络上已经将 laravel 的安装步骤说的足够详细,本人也是通过这些方式安装的,没有什么特殊之处。关于安装就不在本内容中讨论,但我会在另一篇文章内讲述 composer 相关的内容的时候,聊一聊这一部分。

好了开始吧。

 

声明

第一篇文章我不打算将重心直接带到框架的使用上,而是让读者有一个清晰的概念。很多在 laravel 上的疑惑无非是安装上的问题、功能函数或对象方法上的问题,最后就是纠结框架结构布局和一些php基础知识上的。为了便于展开,我会着重在本文讲述一些与 laravel 相关的基础内容,这不但对于梳理整个框架体系有着很大的帮助,更多的是为了理解一种思想,这种思想不但适用于 laravel,更适合平时项目的开发。由于我个人也在不断学习之中,本篇文章会不断更新。本文除了文字讲述,也尽量带来一些实例。在网络上现有的资源存在的情况下,本人会在文章内简要提出并给出链接,以便各位按需获得想要的。

正文

laravel是一个当下比较流行的框架,其主要特色个人认为包括以下:

  • 简洁而清晰地路由定义方式
  • 强大的IoC容器
  • 合理的框架结构
  • 丰富的第三方库

入门很简单

只要理清 laravel 上述的特色,基本上对laravel了解的差不多了,就算是入门了。这前三样特色也恰好是 laravel 优雅的保证。其实 laravel 主要要学习的也就这么多。所以,为什么会很难? laravel 真的很简单,也许只是没有找对方向,对吗?肯定是的。

我目前所了解的,包括发生在我自己身上的,为什么觉得有时候 laravel 很难入门:思想、思路太过于陈旧。思想陈旧不算是贬义词,就好比你不可以说一个跟不上时代的人不如别人。但这种“旧”思想确实不适合 laravel 这种运用相对于旧思想而言的新框架。那么哪些人容易在 laravel 上犯难?

  • 没有认认真真(再次强调,是认认真真)看文档的(占比至少97%)
  • php 基础不扎实的
  • 不熟悉面向对象编程的
  • 不熟悉面向接口编程的
  • 不知匿名函数为何物的
  • 不熟悉反射的
  • 不喜欢命名空间的
  • 不喜欢研究设计模式的
  • 使用 php5.4 以前版本的或不喜欢运用新特性的
  • 没用过 composer
  • 不熟悉 PSR 规范

上述内容不具备绝对代表性。不过确实在 laravel 学习上犯难的,大都存在上述因素。不幸的是,最开始我基本全部满足上述条件,不幸的成为了学习 laravel 最艰难的那批人。但幸运的是,我很喜欢php,为了搞懂 laravel,照猫画虎,模仿着去实现 laravel 的功能。就是在这样一个过程里,我慢慢了解了 laravel 其实并不像想象中的那般高大上,无非只是用了 php 最为普通的一些东西。但成功必有其高明之处,laravel 将 php 的特性发挥到了极致,使得 laravel 的某一些境界变得比其他框架更高。虽然其他优秀的框架不在少数,但我认为,laravel 这个框架虽然整体不能够算是最好,但至少在设计思想上已经将许多(特别注明,不是全部)框架狠狠地拉在了身后。

要学好 laravel,至少要学会做一件事:看文档。大多数人觉得入门难或不知如何入门,请老老实实看文档吧。

很多人说,laravel 文档真的很渣啊,但实际上,你只是要上手使用,用 laravel 开发一个博客级别的小型应用,这个作为入门的文档算是超级详尽的了。并不是站着说话不腰疼,因为我也吐槽过。但在某一天百般无聊之下通读了整个文档,发现之前我所遇到的问题其实都写在过文档上。

吐槽laravel文档的重心不应该是不详尽,而应该是,太凌乱

laravel 的文档凌乱才是大问题,虽然看得出 laravel 文档的结构安排的初衷是为了减少冗余的文字,但这点却让像我这种被惯坏了的用户犯了大难。往往看似应该在这一部分出现的内容却在另一篇文档内,这种安排不算奇葩也算是坑爹了。不得不承认,这样子的安排减少了不必要的文字,但却对初学者不友好。

这种情况举个例子:定义控制器是 Route::controller(),按照常理这应该和路由部分有个交集,但在控制器介绍部分只字未提,极其容易和原本的路由定义搞混淆,因为他们都用了 Route 类。这只是一个典型。在数据库一块也常常出现类似问题,甚至更为严重。

但是,即使如此凌乱,也不应该成为不去读文档的理由。学习任何一个框架,都应该仔细阅读其文档。其实到最后才发现,原来 laravel 文档的安排对于熟悉的开发者而言,反而是很科学的,因为其归类非常明确,省去了不必要的文字感染,让你专注于这一个问题点上。所以,不要认为文档不详细,其实文档做的已经够多了。要知道,文档是为了让你能够上手使用,并不是完完全全让你彻底学透的,如果想要了解更多 laravel 的细节和功能,我认为应该去读一读 Laravel 的 API 文档和一部分的Symfony文档。如果愿意,阅读不同组件的源代码效果更好,有时候你会产生一种源代码比文档更清晰的错觉 stuck_out_tongue_closed_eyes。

PHP的基础也很重要

无论用什么框架,都不要忘了这都是在做 php 开发,因此 php 的基础非常重要。框架是让编码更为方便,提高效率的,并不是为了降低某些层面的难度。

很多人在基础方面吃亏,却将其归咎于框架的错,可能这些人和我最初一样,没意识到 laravel 是一个在 php5.4 基础上开发的(新的 laravel 5.1 要求 php 5.5 以上),用到了很多特性。其中有一个重点就是命名空间和trait。命名空间很多人不喜欢,认为这是个很麻烦的事情,别忘了命名空间是从 php5.3 就有的了,最初这是为了解决重名和项目之间类的冲突的。到了现在,命名空间的存在使得项目与组件的代码更容易规划从而变得规范化,尤其是在自动加载的时候,这一部分参考 PSR-4 规范。命名空间的不熟悉会给学习 laravel 和一些新版本的框架带来足够多的麻烦。

想要了解 php 的命名空间不需要可以寻找教程,php 官方文档非常详尽。

除了命名空间,还有 trait,这是 php 5.4 以来的特性,适用于水平扩展类方法和功能的,通过 trait 可以更快的组装一个方法,具体依旧参考 php 官方文档,十分详尽。

其实除了 trait 和命名空间,作为建立在面向对象编程思想下的框架,尤其应当在整个开发中贯彻这一思想。而 php 的面向对象和 java、C# 还有 C++ 中有些地方有着不少的差异。

习惯了 php 的弱类型,有些人甚至不知道 php 可以实现类型约束:

  1. class foo
  2. {
  3. publicfunction __construct(Closure $config)
  4. {
  5. //
  6. }
  7. }

上述例子要求初始化时必须提供一个匿名函数作为参数。

重载、魔术方法、后期静态绑定等等面向对象的基础内容,这都是学习 laravel 之前的必修课。当你遇到困难,很多时候会在这上面出的问题。

Composer 与 PSR 规范

很多人有些疑惑,如何在 laravel 内使用自己的类? 很多人疑惑,一些文件应当放在 laravel 的哪个目录下? 也有很多人疑惑,为什么会提示某一些类无法加载?

问这些问题的主要有两种人。一种是不了解 composer 的,一种是代码里存在问题的。后者占主要部分,但我想来说说前者,因为一开始我是第一种。

虽然 Composer 不应当是学习 php 和 laravel 的必须的,但既然被 laravel 所使用且 composer 被接受和普及已经是大势所趋,那就应当对其至少有些许了解。composer 被创造的初衷是用来管理 php 依赖的。利用 composer 可以很快的引入第三方库,且这些库可以被直接使用。

不单单是 Laravel,实际上作为一个基于 Symfony 框架组件开发的框架,Symfony 这个框架更能感受到 Composer 利用的普遍,同时还有 Yii Framework 等主流的优秀框架,这些无一不使用了 composer 作为组件的包管理器。

Composer 自带的自动加载(autoload)机制是基于 PSR 规范的。因此非常有必要了解 PSR 规范,对于自动加载,仅需了解 PSR-4 即可,PSR-0 基本被淘汰。

由于利用好 composer 的自动加载,使得无论你的类库和函数放在哪都能够被加载。因此,如何在 laravel 中使用自己的类呢?很简单,基本上我所了解的就以下两种。

  • 如果你的类库是发布到某个版本控制系统上,可以通过 packagist.org 发布自己的包,然后通过 composer 的 require 引入即可。
  • 如果你没有使用 vcs 且仅仅只是在当前项目中创建的类的话,只需利用好 composer 的 autoload 即可。

Composer 实现库和依赖的导入有很多种,Composer 的中文文档也非常详尽,不再浪费篇幅。但这一切都需要熟悉 PSR-4 规范(该规范很简单,不要有芥蒂),其次就是一定要熟悉命名空间(namespace)。

同理,一些人疑惑,一些文件该放在 laravel 下的哪一个目录?或者说,我这个文件可以放这里吗?

这么说吧,理论上,放在哪都可以,只要是可以通过 composer 和 laravel 自带的自动加载机制载入即可,且文件是在配置内所设定的命名空间内。如果加载时出现问题,可以通过 composer 命令dump-autoload 来解决,如果还有问题,需要检查是否命名空间和配置出现问题。

转载:https://www.insp.top/article/learn-laravel-route-basic

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/8681549.html

posted on 2018-03-31 11:40  孙龙-程序员  阅读(265)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3