第四讲:第一个Laravel项目——Hello World
一、认识Laravel
虽然我们前面已经能够打开主页,看到显示的内容,内心十分欢喜,但是对于系统到底是如何工作的,我们还一无所知。那么,首先,我们就需要来了解一下Laravel
的项目结构。打开刚才的blog文件夹,可以看到里面有如下文件夹,对于它们的功能,我们简单说明一下:
文件夹 | 描述 |
---|---|
App | 包含了应用的核心代码,当然,如果你基于Composer做了PHP组件化开发的话,这里面存放的恐怕也只有一些入口性的代码了。注意 :不是框架的核心代码,框架的核心代码在/vendor/laravel/framework 里面。 |
Bootstrap | 包含了少许文件,用于框架的启动和自动载入配置,还有一个 cache 文件夹,里面包含了框架为提升性能所生成的文件,如路由和服务缓存文件。注意 :别望文生义,把它和Twitter公司 的前端开发框架Bootstrap 搞混了。 |
Config | 包含了应用所有的配置文件,建议通读一遍这些配置文件以便熟悉 Laravel 所有默认配置项。 |
Database | 包含了数据库迁移文件及填充文件,如果有使用 SQLite 的话,你还可以将其作为 SQLite 数据库存放目录; |
Public | 包含了应用入口文件index.php和前端资源文件(图片、JavaScript、CSS等),该目录也是 Apache 或 Nginx 等 Web 服务器所指向的应用根目录,这样做的好处是隔离了应用核心文件直接暴露于 Web 根目录之下,如果权限系统没做好或服务器配置有漏洞的话,很可能导致应用敏感文件被黑客窃取,进而对网站安全造成威胁; |
Resources | 包含了应用视图文件和未编译的原生前端资源文件(LESS、SASS、JavaScript),以及本地化语言文件; |
Routes | 包含了应用定义的所有路由。Laravel 默认提供了四个路由文件用于给不同的入口使用:web.php 、api.php、 console.php 和 channels.php。 |
Storage | 包含了编译后的Blade 模板、基于文件的Session 、文件缓存,以及其它由框架生成的文件,该目录被细分为成 app、framework 和 logs 子目录,app 目录用于存放应用生成的文件,framework 目录用于存放框架生成的文件和缓存,最后,logs 目录存放的是应用的日志文件。 |
Tests | 包含自动化测试文件,其中默认已经提供了一个开箱即用的PHPUnit 示例;每一个测试类都要以 Test 开头,你可以通过 phpunit 或 php vendor/bin/phpunit 命令来运行测试。 |
Vendor | 包含了应用所有通过 Composer 加载的依赖。 |
二、关于路由
所谓路由,简单的理解,就是浏览器在地址栏输入的请求地址。比方我们再测试时打开http://127.0.0.1
这个页面,对应到我们的Laravel中,是如何处理呢?就是看路由文件。通过上面的介绍,我们知道应用中的路由都会定义在routes文件夹中, 而真正负责工作的是web.php
文件。打开这个文件,我们可以看到如下内容:
Route::get('/', function () {
return view('welcome');
});
可以看到,这是一个最基本的GET
路由。我们打开http://127.0.0.1
,实际上就是在请求服务器上的根目录,对应在路由上,就是请求/
。如果我们在浏览器尝试打开http://127.0.0.1/test
,会发现返回了一个404
的如下错误:
Not Found
The requested URL /test was not found on this server.
说明服务器上没有对应的处理/test
路径的路由。那么,我们可以照葫芦画瓢,在web.php
文件中添加如下内容:
Route::get('/test', function () {
return 'Hello, World';
});
我们注意观察可以看到,原来是用的return view('welcome');
,而我这里添加用的是return 'Hello, World';
。这个区别在于:view
返回的是一个视图文件
,而我返回的仅仅是一个字符串。
修改完成后,我们再次在浏览器尝试打开http://127.0.0.1/test
,会发现依然返回404
错误,怎么回事呢,难道我们的路由没有添加成功???显然不是,这又涉及到一个index.php
文件的问题。大部分的PHP框架,在处理URL请求时,它的路径都是以index.php
文件为准的。也就说,我们想要访问http://127.0.0.1/test
的话,需要在地址栏实际输入http://127.0.0.1/index.php/test
才行!!!
现在是不是能够看到“Hello World”啦,恭喜你!
Laravel框架中自带的
public/.htaccess
文件支持隐藏 URL 中的index.php
,但是要先确保Apache
启用了mod_rewrite
模块以支持.htaccess
解析。首先打开httpd.conf
,搜索mod_rewrite
,去掉行首的#
号。然后找到<Directory "D:\WWW\blog\public">
这句话,将后面的AllowOverride None
修改为AllowOverride ALL
即可。
转载于:https://www.jianshu.com/p/f09b0bc0937d