亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 54
粉絲 6
評(píng)論 31
訪問量 124124
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP8安裝配置與Laravel8的入門
吾逍遙
原創(chuàng)
9963人瀏覽過

一、序言

HP 8.0 重大版本更新于2020年11 月 26 日正式開放下載,新版本引入了可選的 JIT 編譯器,將現(xiàn)有的 JSON 支持集成到核心(不再是可選),并增加了對(duì)屬性、聯(lián)合類型,靜態(tài)返回類型和其他附加語言的支持,越來越走向強(qiáng)類型語言了,為了適應(yīng)新環(huán)境,Laravel和ThinkPHP也及時(shí)更新了版本,支持PHP8,不過相對(duì)PHP7,在安裝和配置方面有了些變化,如要開啟SSL、mbString等擴(kuò)展才能正常使用等問題,為了便于自己學(xué)習(xí),寫下博文,方便以后查找。我的環(huán)境是Windows 10 2004版,PHPStudy是8.1.1.2。

一、PHP8的安裝與配置

1、PHP8安裝與常規(guī)配置

我目前常用集成開發(fā)環(huán)境是PHPStudy,但也許是為了穩(wěn)定性,沒及時(shí)增加PHP8,于是我就手動(dòng)增加PHP8了。PHP8下載是官方地址https://windows.php.net/download,目前已經(jīng)更新到了8.0.1版了。

php8

將下載的壓縮包解壓到PHPStudy的軟件的目錄Extensions\php下,然后解壓命名,我命名為php8.0.1nts。壓縮文件解壓后會(huì)發(fā)現(xiàn)并沒有 php.ini 文件,取而代之的是以下兩個(gè)文件:
php.ini-production和php.ini-development,將 php.ini-development 重命名為 php.ini 并打開。

php01

在php.ini中配置PHP8 擴(kuò)展所在目錄,搜索 extension_dir 關(guān)鍵字,然后將路徑改指向?yàn)閜hp8.0.1nts/ext目錄的絕對(duì)路徑,路徑分隔符,正斜杠或反斜杠都支持,不過還是建議是正斜杠。

php02

在系統(tǒng)中配置系統(tǒng)環(huán)境變量,就是將php8.0.1nts目錄加入系統(tǒng)環(huán)境變量Path中

php02

現(xiàn)在可以在命令提示符中輸入php -v查看版本了

php04

2、PHP擴(kuò)展的配置(ThinkPHP6和Laravel8通過)

一般教程到上面就結(jié)束了,可以是我接著composer下載ThinkPHP6和Laravel8卻報(bào)各種錯(cuò)誤。下面是其中的一個(gè)錯(cuò)誤截圖

php05

目前百度查了下,找到了PHP中文網(wǎng)上藏色散人轉(zhuǎn)發(fā)LearnKu網(wǎng)翻譯Laravel8官方網(wǎng)的教程,鏈接地址是http://ipnx.cn/phpkj/laravel/466988.html,我滿心歡喜跟著一番猛如虎的操作,可卻是一堆紅色報(bào)錯(cuò),我想轉(zhuǎn)發(fā)人也沒親身實(shí)踐,也沒真正搞明白如何讓PHP8支持Laravel8和ThinkPHP6。不過我從報(bào)錯(cuò)信息中看到最多的關(guān)鍵詞就是extension,即是擴(kuò)展,框架需要擴(kuò)展,而PHP默認(rèn)是屏蔽的,需要我們手動(dòng)修改php.ini,開啟擴(kuò)展。在命令提示符查看擴(kuò)展命名是php -m,你可以通過它看php是否開啟錯(cuò)誤中擴(kuò)展。

ThinkPHP6需要開啟 openssl和mbstring 2個(gè)擴(kuò)展,而Laravel則要開啟 openssl、mbstring和fileinfo 3個(gè)擴(kuò)展。開啟方法就是除掉php.ini中擴(kuò)展前面分號(hào)就可以,同時(shí)記得要重啟Apache才生效。

php06

還要提醒大家一下,若上面擴(kuò)展未開啟,是無法通過composer下載ThinkPHP6或Laravel8的,一開始我還以為是源的事,切換為阿里云鏡像也沒用,所以想讓ThinkPHP6或Laravel8運(yùn)行在PHP8之上,上面3個(gè)擴(kuò)展是必須要開啟的。最后可通過命令行php -v或phpinfo()查看是否開啟。

現(xiàn)在大家可以happy的在PHP8上學(xué)習(xí)ThinkPHP6或Laravel8了,至于修改composer.json中php版本為8.0,你可以看我發(fā)的PHP中文網(wǎng)轉(zhuǎn)發(fā)的教程,然后composer update就可以了,經(jīng)測試再也不報(bào)錯(cuò)了。

三、Laravel 8的入門

1、Laravel的安裝和資源

本來是按教程安裝Laravel7的,但是看官方都已經(jīng)更新到了8.5.7了,而且說實(shí)在話,通過老師介紹Lavarel比較任性的就是模型目錄的處理,我是從ThinkPHP6過來的,還是喜歡目錄分明的框架,在Laravel8中作者也說了,為適應(yīng)大部分人要求,也隨這個(gè)潮流了,將模型歸為Models目錄中了。

laravel01

Laravel 8安裝使用composer即可:composer create-project laravel/laravel laravel8

Laravel 8的翻譯文檔也是老師視頻中那個(gè)網(wǎng)站的https://learnku.com/docs/laravel/8.x

2、簡單路由和重定向

Laravel8和Laravel7一樣,必須配置路由才可正常訪問,這點(diǎn)要和ThinkPHP6區(qū)分開,中國特色的軟件都會(huì)考慮到中國人的懶,默認(rèn)提供了一些配置,讓你開箱即用,而國外程序員都是比較嚴(yán)謹(jǐn)?shù)?,追求功能。網(wǎng)頁訪問是配置routes/web.php,API是routes/api.php,我們先體驗(yàn)一番,在web.php中我添加了下面歡迎的訪問。

  1. Route::get('/hello',function(){
  2. echo 'Laravel 8 Hello World!';
  3. });

在上面訪問的url中我們必須加上index.php才可正常訪問,否則給你報(bào)no input file specified錯(cuò)誤,于是我到ThinkPHP6手冊(cè)中查找url重定向,復(fù)制過來放到public目錄的.htaccess文件中,結(jié)果還是報(bào)錯(cuò),不得不吐槽下,ThinkPHP官方手冊(cè)中Apache的重定向中index.php后面少了一個(gè)?號(hào),目前正常的是

  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymlinks -Multiviews
  3. RewriteEngine On
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
  7. </IfModule>

3、Laravel8的路由寫法

為什么單獨(dú)說下Laravel的路由寫法呢,開始之前,老師已經(jīng)提醒了Laravel7和Laravel8的寫法不同,Laravel7是Route::get('index','Article@list');,而Laravel8是Route::get('list', [Article::class, 'list']);,當(dāng)我滿懷信心時(shí),Laravel卻是給我報(bào)了一個(gè)大大的錯(cuò)。

laravel02

我又查看了的確定義了類文件,也按psr-4規(guī)范,為什么給我報(bào)這個(gè)錯(cuò)呢,百度了下,原來Laravel8的路由routes/web.php還要手動(dòng)引入類,才可調(diào)用路由,因?yàn)槁酚芍?code>Article::class是PHP標(biāo)準(zhǔn)獲取類的全路徑(包括命名空間),而Laravel8的web.php默認(rèn)只有use Illuminate\Support\Facades\Route;,于是定義一個(gè)控制類就要引入一次再寫路由,或都是使用Route::get('list', [App\Http\Controllers\Article::class, 'list']);,這不是倒退了嗎?

又查了,網(wǎng)上有文章說在app\Providers目前下RouteServiceProvider.php有一個(gè)開關(guān),打開就不用這樣一個(gè)一個(gè)引入類了,可惜還是不行,它的作用我后面再說,我們還是先解決不用引用類就可直接定義路由的問題,我再看routes/web.php源碼,發(fā)現(xiàn)它竟然沒定義命名空間,它是全局空間,學(xué)習(xí)過PHP都知道,這種情況下要引用其它命名空間下的類就要手動(dòng)引入了,難道它沒使用 composer的autoload自動(dòng)加載,查源碼也加載了,到現(xiàn)在也沒找出原因,不過我找到解決方法了,就是加上命名空間namespace App\Http\Controllers;

laravel03

再回頭說說RouteServiceProvider.php開關(guān),就是protected $namespace = 'App\\Http\\Controllers';,默認(rèn)是注釋掉的,它真正的作用是將路由寫法恢復(fù)到Laravel7的寫法規(guī)則,而且不用在routes/web.php加命名空間解決一個(gè)個(gè)手動(dòng)引入控制類的問題了,要記住,它不能解決Laravel8路由寫法的問題,它是將路由寫法恢復(fù)到Laravel7的路由規(guī)范,就是說去掉這個(gè)注釋,路由寫法按Laravel7沒什么問題,如果你想使用Laravel8的寫法可以參考我上面解決的方案。

laravel08

不得不說Laravel8有些默認(rèn)真是無法理解,建議打開上面RouteServiceProvider.php的開關(guān),此進(jìn)路由寫法同時(shí)支持Laravel7和Laravel8兩種規(guī)范,Laravel7路由不需要引入類,而Laravel8還是要引入類,統(tǒng)一引入可參考我上面的做法,目前測試沒問題。

最后說下,在解決問題過程中網(wǎng)上查了好多文章,都解釋這個(gè)開關(guān),但沒提出解決Laravel8路由手動(dòng)引入類的問題,我這篇算是比較全面了。

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語:JIT,是php8最大的亮點(diǎn)
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)