Laravel是一个时下非常流行的PHP开发框架,这个框架基于composer进行构建,它的设计吸取了ROR等框架的优点,在许多开发人员中评价都不错。当然,它的缺点也相对明显,首先Laravel的性能奇差,另一方面它设计的实在是复杂,和原生PHP开发相差很大,因此也有很多人认为Laravel这种重型框架失去了PHP这门语言的初衷。无论如何,Laravel现已得到了广泛的使用,并且更新速度非常之快,这里我们就简单学习体验一下Laravel。
Laravel官网:https://laravel.com/
注:Laravel版本更新非常快,本系列笔记刚开始写的时候版本还是5.8
,但是学着学着主版本就到6.0
了,而且该版本是长周期支持版,因此本系列笔记参考文档的版本为6.0
。
Laravel环境搭建比较复杂,而且PHP本身环境就比较难搞,composer也基本是我见过的最差的包管理器(LOGO还特别丑),因此这里也是尝试了半天才将初始工程运行起来。
Laravel官网对文档对PHP扩展要求进行了说明,但可能不全,我们按照官网工程搭建一步步来,遇到错误再找对应的办法就行了。
我这里使用的是PHP7.2.22,开启了以下扩展:
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_mbstring.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
执行以下composer命令创建项目:
composer create-project laravel/laravel blog
此外我们也可以全局安装Laravel安装器,然后直接用laravel
命令创建项目:
composer global require laravel/installer
laravel new blog
Laravel即使创建空项目也有很多依赖包,因此务必要添加composer
的国内镜像,而且第一次创建项目将会非常漫长(还可能有某个包偶然下载失败的情况),请耐心等待。安装完成后,我们就可以用PHP内置服务器启动项目了。
php artisan serve
启动浏览器,访问调试服务器的默认端口8000
即可。
注:artisan
是Laravel中一个PHP命令行工具。
新建一个空项目后,我们可以看到其实已经创建了一大堆文件:
|_app 我们工程大部分代码都在这里编写,包括控制器、模型、自定义命令行工具等
|_bootstrap Laravel框架自身启动相关的代码
|_config 我们工程的配置目录,我们需要修改其中的配置使其符合我们的要求
|_database 包括数据迁移代码、模型工厂类、种子数据等
|_public 站点的静态数据
|_resources 包括视图模板,以及未编译的资源如JavaScript、Less等
|_routes 路由配置
|_storage 站点的运行时文件目录,我们应用产生的一些文件也可以放置在这里
|_tests 存放测试相关代码
|_vendor 存储composer依赖
Laravel官网文档给出了一份对于Nginx服务器的配置文件例子,修改下基本就可以使用了。
server {
listen 80;
server_name example.com;
root /example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
除此之外,文档中也给出了一些优化Laravel性能的建议,下面是一些示例配置。
composer加载器优化:
composer install --optimize-autoloader --no-dev
配置信息加载优化:
php artisan config:cache
路由加载优化:
php artisan route:cache