欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第四讲:第一个Laravel项目——Hello World

程序员文章站 2022-05-08 13:37:29
...

一、认识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