001-玩轉(zhuǎn)laravel框架

一伤提、框架概述

課程概述

  1. laravel 4天(之前TP框架還是很大的區(qū)別)(國(guó)外框架)
  2. 在線教育平臺(tái) 6天(laravel熟悉+插件+開(kāi)發(fā)模式)

  1. dedecms 二次開(kāi)發(fā)
  2. CI框架

1逸爵、什么是框架?

框架是許多代碼的集合荷辕,為項(xiàng)目開(kāi)發(fā)提供了很多基礎(chǔ)性的代碼爷辱。例如常見(jiàn)的參數(shù)過(guò)濾,DB類的封裝跷车、文件上傳類区丑,圖片處理類拧粪,驗(yàn)證碼類等等。程序員只需要將重心放置到業(yè)務(wù)邏輯的實(shí)現(xiàn)刊苍,加快開(kāi)發(fā)的速度既们。

一個(gè)項(xiàng)目 = 功能性代碼(框架提供) + 業(yè)務(wù)邏輯(自己編寫(xiě))

什么是MVC的開(kāi)發(fā)思想濒析?

M 是 Model的簡(jiǎn)寫(xiě)正什,負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)處理。
V 是 View的簡(jiǎn)寫(xiě)号杏,負(fù)責(zé)顯示數(shù)據(jù)和收集數(shù)據(jù)婴氮。
C 是Controller的簡(jiǎn)寫(xiě),負(fù)責(zé)協(xié)調(diào)(調(diào)度)左右盾致。

問(wèn)題:

  1. 在MVC設(shè)計(jì)思想里面主经,哪一個(gè)是最重要的?
    答:M最重要庭惜,數(shù)據(jù)的處理罩驻。(MVC 首當(dāng)其沖是M)

  2. 在MVC設(shè)計(jì)思想里面,和用戶直接產(chǎn)生關(guān)聯(lián)的是哪一個(gè)护赊?
    答:C 控制器惠遏,地址欄 url地址----》模塊下控制器下方法
    http://local.mvc.com/index.php/Home/View/login 方法(邏輯判斷 1. 載入視圖 get 2. 實(shí)例化模型post)

  3. 在MVC里面如果沒(méi)有V視圖層的參數(shù),是否可以正常顯示數(shù)據(jù)骏啰?
    答:MCT開(kāi)發(fā)思想节吮。(T template模板)可以

  4. html 可以直接 echo "html標(biāo)簽"; $html = <<<HTML
    html代碼
    HTML;

為什么要使用MVC開(kāi)發(fā)思想?

現(xiàn)在更多的是個(gè)人開(kāi)發(fā)為主判耕,但是實(shí)際工作開(kāi)發(fā)肯定是團(tuán)隊(duì)合作為主透绩。必然溝通的問(wèn)題,協(xié)調(diào)的問(wèn)題壁熄。主要是為了團(tuán)隊(duì)的協(xié)作帚豪。統(tǒng)一的規(guī)范進(jìn)行開(kāi)發(fā),后期容易整合草丧。最后的維護(hù)是容易狸臣。

2、為什么要使用框架?(面試)

  1. 代碼重用方仿,很多通用的代碼可以復(fù)用固棚,例如做參數(shù)過(guò)濾统翩,可以封裝成一個(gè)函數(shù) I('get.id', 0, 'intval')

  2. 開(kāi)發(fā)者只需要關(guān)注業(yè)務(wù)代碼,不需要關(guān)注框架底層代碼實(shí)現(xiàn)此洲,例如數(shù)據(jù)庫(kù)的操作
    原生:insert into sh_goods values(xx..x...) mysql mysqli pdo....
    框架:D("Goods")->add(I('post.'))

  3. 代碼量變少了厂汗,開(kāi)發(fā)速度快,開(kāi)發(fā)周期短(40-60%)

  4. 開(kāi)發(fā)規(guī)范比較統(tǒng)一呜师,例如函數(shù)和類的命名娶桦,方便團(tuán)隊(duì)協(xié)作
    原生:user.php aaaa.php bbbbb.php afsdaf.php
    框架:UserController.class.php

  5. 后期的維護(hù)更加方便,同時(shí)功能模塊的擴(kuò)展也變得容易

弊端:使用框架劣勢(shì)汁汗?
答:凡事都有兩面性衷畦。

  • 限制人的思維(必須按照框架的規(guī)則來(lái)做事)條條框框多(學(xué)習(xí)成本)(排斥新東西)
  • 兼容性(新版本升級(jí))(TP3.2經(jīng)典 php7新特性,TP5里面寫(xiě)的寫(xiě)法知牌,PHP7里面的特性全部發(fā)揮)(TP5使用很多)(TP5里面的大部分的單字母函數(shù)全部廢棄 I( ) C())(面試:?jiǎn)栴} 會(huì)TP5祈争?)
  • 框架本身有性能消耗(為了解決開(kāi)放性的問(wèn)題,不得已要做很多的兼容性的處理)(開(kāi)發(fā)優(yōu)先角寸、性能優(yōu)先)laravel開(kāi)發(fā)優(yōu)先(運(yùn)維:很少在程序上面出現(xiàn)性能問(wèn)題菩混、IO操作:mysql數(shù)據(jù)庫(kù)---》memcache內(nèi)存緩存、Redis....) laravel運(yùn)行效率低(所有PHP框架里面允許效率最低)
  • .......

3扁藕、PHP中的主流框架

Zend Framework(俗稱zf框架)

php語(yǔ)言公司官方(zend公司)開(kāi)發(fā)的框架沮峡,重量級(jí)框架;因?yàn)楣俜介_(kāi)發(fā)亿柑,所以需要考慮的方面很全面邢疙,導(dǎo)致框架整體很臃腫。

image.png

YII(個(gè)人產(chǎn)品)

中文叫做易框架望薄,重量級(jí)框架疟游,美籍華人薛強(qiáng)進(jìn)行開(kāi)發(fā)的框架。最大的特點(diǎn)就是組件化式矫、代碼復(fù)用乡摹。(不太適合新手進(jìn)行使用,里面的設(shè)計(jì)模式采转、OOP概念理解很深聪廉、外貿(mào)電商使用的比較多)不建議:HTML代碼,建議HTML代碼全部使用PHP的類庫(kù)進(jìn)行輸出故慈。$form = new FormActive(); $form->open('post', 'url'....)很前端jQuery很緊密板熊。

image.png

最先在YII里面提出代碼的復(fù)用性的體現(xiàn),為了減少重復(fù)性代碼的開(kāi)發(fā)察绷。研發(fā)了一個(gè)叫做GII的模塊干签,也叫作代碼生成器、也叫作腳手架拆撼,主要是做輔助性的開(kāi)發(fā)容劳,用戶只需要輸入一下表名喘沿,即可生成對(duì)應(yīng)curd相關(guān)的代碼文件。這個(gè)東西太好用了竭贩,所以很多框架爭(zhēng)相模仿蚜印,我們今天學(xué)習(xí)laravel也提供了類似的工具,叫做 artisan命令工具留量,有了它可以非痴常快速的生成一些基礎(chǔ)性的代碼,例如控制器的生成楼熄、模型的生成等等......

php artisan make:controller UserController
php artisan make:model User

基本上所有的開(kāi)發(fā):

商品模塊忆绰、會(huì)員模塊.....

  1. 控制器(curd操作)
  2. 模型(自動(dòng)驗(yàn)證、自動(dòng)完成....)
  3. 三個(gè)靜態(tài)頁(yè)(add\edt\lst)

處理:
輸入:sh_admin;
生成:五個(gè)文件....

Symfony2(企業(yè)使用較多可岂,大企業(yè)使用的偏多)

重量級(jí)框架错敢,國(guó)外框架。由于symfony框架開(kāi)發(fā)的思想太超前了青柄,以至于在很早之前引入很多新的好的特性伐债。后面很多的其他的產(chǎn)品都借鑒了該框架的特性预侯,出來(lái)了很多的衍生產(chǎn)品致开,例如我們今天學(xué)習(xí) laravel框架,就是symfony的兒子(IOC容器)萎馅;同時(shí)還有YII框架里面也借鑒了symfony里面的特性(事件模型編程双戳、javascript事件編程)。

最后還有一點(diǎn)需要注意糜芳,symfony框架是很早之前就和composer進(jìn)行默契的配合飒货。同時(shí)symfony框架的底層的模板引擎使用的是 twig 模板引擎。

image.png

Laravel(重點(diǎn))

目前是一個(gè)非城涂ⅲ火的非程粮ǎ火的重路由的框架。需要注意該框架是基于Symfony框架的(Symfony 底層使用composer這個(gè)類庫(kù)管理軟件)皆撩。在學(xué)習(xí)laravel之前還要學(xué)習(xí)一下composer這個(gè)軟件扣墩。

image.png

Codelgniter (小型)

CI框架,輕量級(jí)框架扛吞,國(guó)外框架(個(gè)人開(kāi)發(fā)的產(chǎn)品呻惕,全國(guó)使用量,很多人喜歡將該框架作為基礎(chǔ)性的框架滥比,然后在該框架上加入自己的代碼進(jìn)行封裝)亚脆,市場(chǎng)上有一定的應(yīng)用。顯著的特點(diǎn):按需加載盲泛。

image.png

ThinkPHP

ThinkPHP是一個(gè)叫做劉晨的中國(guó)人開(kāi)發(fā)的國(guó)產(chǎn)框架濒持。有中文官網(wǎng)键耕、中文幫助文檔、中文社區(qū)柑营,以及豐富的百度搜索資源郁竟。所以ThinkPHP很適合作為入門(mén)級(jí)的開(kāi)發(fā)框架(學(xué)習(xí)成本是最低)。

image.png

下面的介紹的框架都是C語(yǔ)言編寫(xiě)的框架由境,是說(shuō)這個(gè)框架本身是用C語(yǔ)言進(jìn)行編寫(xiě)棚亩,但是編寫(xiě)完成之后,將它進(jìn)行編譯成一個(gè) dll(Windows動(dòng)態(tài)鏈接庫(kù)文件)(php_yaf.dll)虏杰,然后在php.ini文件進(jìn)行引入讥蟆。

yaf框架

Yaf,全稱 Yet Another Framework纺阔,是由鳥(niǎo)哥(惠新宸)使用C語(yǔ)言進(jìn)行開(kāi)發(fā)的一個(gè)高性能的可以作為PHP擴(kuò)展出現(xiàn)的框架瘸彤。(Yaf_Abstarct)

image.png

除了原生PHP的寫(xiě)法 yaf框架的性能是最好的。

phalcon框架(國(guó)外)

Phalcon 是開(kāi)源笛钝、全功能棧质况、使用 C 擴(kuò)展編寫(xiě)、針對(duì)高性能優(yōu)化的 PHP 5 框架玻靡。 開(kāi)發(fā)者不需要學(xué)習(xí)和使用 C 語(yǔ)言的功能结榄, 因?yàn)樗械墓δ芏家?PHP 類的方式暴露出來(lái),可以直接使用囤捻。 Phalcon 也是松耦合的臼朗,可以根據(jù)項(xiàng)目的需要任意使用其他對(duì)象。Phalcon是一套實(shí)現(xiàn)MVC架構(gòu)的高性能PHP應(yīng)用程序框架蝎土。(文檔很少)性能是僅此于yaf视哑。

image.png

php框架性能:
php原生開(kāi)發(fā)(目前很多公司)> yaf框架(PHP的擴(kuò)展出現(xiàn),常駐內(nèi)存)>Phalcon> CI框架 > TP|YII > laravel > zf|symfony...

思考:
laravel為什么會(huì)在國(guó)內(nèi)流行誊涯?

  1. 出現(xiàn)的時(shí)機(jī)是最合適的挡毅。
  2. 代碼相對(duì)來(lái)說(shuō)寫(xiě)起來(lái)簡(jiǎn)潔,用很少的代碼可以完全多一些暴构。
  3. laravel設(shè)計(jì)思想就很超前跪呈,其他的框架沒(méi)有及時(shí)去運(yùn)用PHP最新的特性。并且laravel借鑒了很多其他的編程語(yǔ)言的特性丹壕,例如Java庆械、ruby。
  4. 擴(kuò)展性很好(設(shè)計(jì)模式)菌赖。
  5. 和composer有很好的配合缭乘,互利共贏。(百度:composer里面提供的類庫(kù)大部分是支持laravel)
  6. 最后laravel對(duì)前端款框架支持也非常友好 laravel + vuejs
  7. .....

4、ORM機(jī)制

什么是ORM機(jī)制堕绩?
object relationship model 對(duì)象關(guān)系模型策幼。由于現(xiàn)在開(kāi)發(fā)的主流的思想是面向?qū)ο髮?shí)現(xiàn)(OOP),面向?qū)ο蟮闹黧w是對(duì)象奴紧。既然面向?qū)ο罂梢院芎玫娜ソ鉀Q現(xiàn)實(shí)的問(wèn)題特姐。

是否可以使用該思想來(lái)去操作數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的操作習(xí)慣使用結(jié)構(gòu)化的查詢語(yǔ)句 (SQL 第四代編程語(yǔ)言 select * from user where id = 1)(AI:程序員不值錢(qián)黍氮,電腦編程 美國(guó):機(jī)器人炒股)唐含。

是否可以使用面向?qū)ο蠓绞饺ゲ僮鲾?shù)據(jù)庫(kù)?可以沫浆、映射關(guān)系

模型類(UserModel) 表(sh_user) [行和列]

對(duì)象($userModel = new UserModel()) 表中記錄[一行]

屬性($userModel->username) 表中字段(username捷枯、password)

方法 ($userModel->select()|find()|upate()|add()) 記錄的操作(curd)

5、ORM的實(shí)現(xiàn)

既然ORM是一種思想专执,是一種解決問(wèn)題的方式淮捆。屬于一種抽象的行為。那么應(yīng)該想辦法去實(shí)現(xiàn)該思想本股。實(shí)現(xiàn)的方式有很多種:

  1. AR模式(Active Record TP里面使用該方式實(shí)現(xiàn))
    $userModel = D('User'); // 模型類 sh_user;
    $userModel->username = 'andy';
    $userModel->password = md5('admin88');
    $userModel->add();

  2. eloquentORM機(jī)制(laravel里面的實(shí)現(xiàn))

  3. medoo機(jī)制(yaf框架里面有教攀痊,yaf框架里面是沒(méi)有模型層,模型自己實(shí)現(xiàn) pdo功能已經(jīng)足夠強(qiáng)大)..............
    http://medoo.lvtao.net

了解:面向過(guò)程拄显、OOP編程苟径、AOP編程【面向切面編程】、面向組件編程....

二凿叠、laravel框架

1涩笤、laravel簡(jiǎn)介

laravel是目前一個(gè)比較主流的框架,現(xiàn)在很多互聯(lián)網(wǎng)的公司基本都在使用該框架盒件。該框架是基于symfony【國(guó)外一款非常流行的框架:由于國(guó)內(nèi)手冊(cè)不是很齊全,沒(méi)有多少公司使用】的一個(gè)國(guó)外的MVC框架舱禽。

image.png

官網(wǎng):https://laravel.com/

國(guó)內(nèi)訪問(wèn)地址:http://www.golaravel.com/

中文社區(qū)網(wǎng)站:https://laravel-china.org/

2炒刁、開(kāi)發(fā)環(huán)境要求

laravel框架有運(yùn)行對(duì)環(huán)境是有嚴(yán)格要求的。(在Windows下建議使用集成開(kāi)發(fā)環(huán)境phpstudy這個(gè)產(chǎn)品誊稚,目前還支持php7翔始,并且可以非常方便的做版本切換。)

image.png

注意:如果要使用PHPstudy里伯,則必須先關(guān)閉之前的wamp環(huán)境(例如Apache城瞎、MySQL服務(wù))

注意:安裝的過(guò)程中出現(xiàn)vc庫(kù)找不到,使用下面的方式進(jìn)行處理


錯(cuò)誤解決

3疾瓮、laravel安裝方式簡(jiǎn)介

  1. 使用專業(yè)的軟件 composer 軟件脖镀,可以幫我們自動(dòng)去互聯(lián)網(wǎng)下載開(kāi)發(fā)過(guò)程中所需要的類庫(kù)文件和Linux下包管理器yum比較類似,和node.js里面npm 狼电,也和前端里面bower相似蜒灰。

簡(jiǎn)介:http://docs.phpcomposer.com/00-intro.html

國(guó)外鏡像:https://packagist.org/

國(guó)內(nèi)鏡像:https://pkg.phpcomposer.com/

很多其他的語(yǔ)言都有對(duì)應(yīng)的包管理器弦蹂,但是唯獨(dú)PHP里面開(kāi)啟是沒(méi)有的,這個(gè)時(shí)候就有人提出一種思想强窖,把所有的PHP常見(jiàn)的類庫(kù)(上傳凸椿、圖片處理、分頁(yè)類)統(tǒng)一放在一個(gè)PHP應(yīng)用商店翅溺。然后使用一定的工具進(jìn)行管理脑漫,例如下載、更新..... 而這這樣的管理工具就是要學(xué)習(xí)的composer管理工具咙崎。

  1. 使用手工安裝窿撬,需要自己去下載laravel的框架的源碼。
    http://laravelacademy.org/resources-download

4叙凡、composer安裝laravel

  1. 在安裝之前劈伴,先配置一下composer使用國(guó)內(nèi)的鏡像源(只要使用一次即可)

composer config -g repo.packagist composer https://packagist.phpcomposer.com

  1. 命令行執(zhí)行如下的命令

composer create-project laravel/laravel=5.1.* local.laravel51.com --prefer-dist

安裝后的界面:


image.png

5、啟動(dòng)laravel項(xiàng)目

laravel官方提供一個(gè)叫做artisan的腳本握爷,可以幫我們快速的完成一些事情跛璧,例如啟動(dòng)項(xiàng)目,生成控制器文件新啼,模型文件..........

可以執(zhí)行如下命名的時(shí)候追城,必須是在laravel項(xiàng)目的根目錄

php artisan serve

image.png

瀏覽器效果:

image.png

6、手工安裝laravel

http://laravelacademy.org/resources-download

  1. 將下載的文件復(fù)制到虛擬主機(jī)目錄
image.png
  1. 在Apache的配置文件配置一個(gè)虛擬主機(jī)【注意燥撞,需要指向 public目錄下】
<VirtualHost *:80>
    DocumentRoot "C:\phpStudy\WWW\laravel.dev\public"
    ServerName laravel51.dev
    ServerAlias phpStudy.net
  <Directory "C:\phpStudy\WWW\laravel.dev\public">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>

  1. 配置hosts文件
127.0.0.1 laravel51.dev

  1. 瀏覽器訪問(wèn)效果
瀏覽器訪問(wèn)

7座柱、laravel目錄結(jié)構(gòu)分析

整體目錄

整體目錄結(jié)構(gòu)

app目錄

image.png

http目錄

image.png

config目錄

config目錄:主要是存放配置文件信息,laravel的配置信息是分文件保存的物舒。


image.png

database目錄

database目錄:數(shù)據(jù)遷移和種子文件色洞。


image.png

例如某個(gè)數(shù)據(jù)遷移文件:在項(xiàng)目開(kāi)發(fā)和測(cè)試階段使用的較多,上線之后基本不用冠胯。


image.png

public目錄

public目錄:?jiǎn)稳肟诤拖到y(tǒng)的靜態(tài)資源(css火诸、img、js荠察、uploads)


image.png

resource目錄

resources目錄:存放視圖文件置蜀。


image.png

storage目錄

storage目錄:主要是存放緩存文件和日志文件,需要注意:如果是在Linux環(huán)境下悉盆,該目錄需要有可寫(xiě)的權(quán)限


image.png

vendor目錄

vendor目錄:主要是存放第三方的類庫(kù)文件盯荤,laravel思想主要是共同的開(kāi)發(fā),不要重復(fù)的造輪子(例如:里面可能存在驗(yàn)證碼類焕盟、上傳類秋秤、郵件類),還需要注意該目錄還存放laravel框架的源碼。注意:如果使用的composer軟件管理的航缀,composer下載的類庫(kù)都是存放在該目錄下的商架。

image.png

.env文件

.env文件:主要是設(shè)置一些系統(tǒng)相關(guān)的環(huán)境配置文件信息。config目錄里面的文件配置內(nèi)容一般都是讀取該文件里面的配置信息(config里面的配置項(xiàng)的值基本都是來(lái)自.env文件)芥玉。

image.png

三蛇摸、laravel入門(mén)使用

1、路由簡(jiǎn)介

因?yàn)閘aravel是一個(gè)重路由的框架灿巧。

什么是路由赶袄?

答:路由就是用戶在地址欄里面輸入一個(gè)url地址后,交給后端的那個(gè)控制器下的那個(gè)方法進(jìn)行處理的規(guī)則抠藕。一般我們需要在專門(mén)的路由文件里面饿肺,進(jìn)行定義好。

為什么要使用路由盾似?

答:laravel里面路由敬辣。最新的 TP5里面也是存在路由。
好處:

  1. url地址變得非常的美觀零院。(以前沒(méi)有路由都是通過(guò)偽靜態(tài)處理)
  2. 隱藏網(wǎng)站的目錄結(jié)構(gòu)(t.cn/goods/index.php ?)(index.php?m=Home&c=User&a=lst)
  3. 防范網(wǎng)絡(luò)攻擊.....

路由文件在哪里溉跃,以及規(guī)則如何編寫(xiě)?

image.png

2告抄、路由入門(mén)使用

// laravel內(nèi)置了一個(gè)Route類撰茎,提供了很多方法 一般是根據(jù)http的請(qǐng)求來(lái)命名 
// 例如: 1. get 2. post 3. any 4. match .....
// get方法是處理 get請(qǐng)求 第一個(gè)參數(shù):代表是請(qǐng)求的url地址的uri部分 
// 第二個(gè)參數(shù):1. 匿名函數(shù) 2. 字符串(控制器下的某個(gè)方法)

// 1. 匿名函數(shù) 返回值作為http的響應(yīng)返回給瀏覽器
// 2. 控制器里面的方法執(zhí)行作為響應(yīng)

// url:http://local.laravel51.com/
Route::get('/', function () {
    return 'hello';
    // return view('welcome');
});

// url:http://local.laravel51.com/about
Route::get('/about', function () {
    return 'about';
    // return view('welcome');
});

3、視圖使用

視圖載入

學(xué)習(xí):

  1. 視圖寫(xiě)在哪里打洼?
  2. 視圖文件如何命名龄糊?
  3. 視圖里面的內(nèi)容和編寫(xiě)?
  4. 視圖是否可以分目錄管理募疮?
  5. 視圖如何被載入炫惩?
  6. 如何視圖賦值?
image.png

效果:

image.png

4酝锅、blade模板引擎

截圖

  1. 在routes.php里面定義一個(gè)/user/login路由
image.png
  1. 建立 login.blade.php視圖文件
image.png
  1. 在routes.php里面定義一個(gè)/blade路由
image.png
  1. 建立 show.blade.php視圖文件
image.png
  1. 注意:laravel模板引擎和 vuejs的沖突解決
image.png

代碼

routes.php路由文件


<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
// laravel內(nèi)置了一個(gè)Route類诡必,提供了很多方法 一般是根據(jù)http的請(qǐng)求來(lái)命名 例如: 1. get 2. post 3. any 4. match .....
// get方法是處理 get請(qǐng)求 第一個(gè)參數(shù):代表是請(qǐng)求的url地址的uri部分 第二個(gè)參數(shù): 1. 匿名函數(shù) 2. 字符串(控制器下的某個(gè)方法)
// url:http://local.laravel51.com/
// 1. 匿名函數(shù) 返回值作為http的響應(yīng)返回給瀏覽器
// 2. 控制器里面的方法執(zhí)行
Route::get('/', function () {
    return 'hello';
    // return view('welcome');
});

// url:http://local.laravel51.com/about
Route::get('/about', function () {
    return 'about';
    // return view('welcome');
});

// 1. 視圖寫(xiě)哪里? 2. 視圖文件名如何命名  3. 視圖里面內(nèi)容 4. 視圖是否可以分目錄管理 5. 視圖如何被載入 6. 如何視圖賦值
// url:http://local.laravel51.com/user/login
Route::get('/user/login', function () {
    // view() 函數(shù)是用于載入視圖的 視圖寫(xiě)在哪里搔扁? 如何命名?
    // /resources/views/視圖文件名稱.blade.php  文件的后綴 .blade.php必須這樣蟋字,因?yàn)閘aravel內(nèi)部使用的一個(gè)模板:blade
    $info = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod consequatur nisi excepturi debitis mollitia autem quis dolores error nulla, ea cumque vero quas beatae eveniet molestias expedita cupiditate. Itaque, culpa!'; // 賦值
    $title = 'Lorem ipsum dolor sit amet, consectetur.';
    // 兩種方式:
    // with 第一個(gè)參數(shù)是視圖調(diào)用名稱 第二個(gè)參數(shù)變量信息
    // 第二種: 直接給view函數(shù)傳遞第二個(gè)參數(shù)稿蹲,關(guān)聯(lián)數(shù)組,key視圖調(diào)用名稱 value變量信息
    $key = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officiis alias assumenda dolorum vel animi quo mollitia possimus neque quod illum!';
    $age = 12;
    // 復(fù)合數(shù)據(jù)類型 [] 數(shù)組 php5.4語(yǔ)法
    $userData = [
        ['id' => 1, 'username' => 'Lorem ipsum dolor sit amet, consectetur adipisicing.'],
        ['id' => 2, 'username' => 'Lorem ipsum dolor sit.'],
        ['id' => 3, 'username' => 'ruby'],
    ];

    // 通過(guò)賦值操作可以在視圖里面顯示數(shù)據(jù)信息鹊奖,但是通過(guò)第二種方式寫(xiě)起來(lái)還是很麻煩苛聘。 key value key value
/*    return view('home.user.login', ['key' => $key, 'age' => $age, 'userData' => $userData])
        ->with('info', $info)
        ->with('title', $title); 
*/    // 文件夾的分隔符使用的 /  laravel建議使用 .

    // 賦值簡(jiǎn)化操作
    // compact('info', 'title', 'key', 'age', 'userData') 可以將數(shù)據(jù)轉(zhuǎn)換為 關(guān)鍵數(shù)組 參數(shù):是變量名
    return view('home.user.login', compact('info', 'title', 'key', 'age', 'userData'));

});


// 視圖里面的模板引擎 blade 1. 基本數(shù)據(jù)輸出 2. 復(fù)合數(shù)據(jù)類型輸出 3. 邏輯判斷

Route::get('/blade', function ()
{
    $title = '模板引擎';

    $userData = [
        ['id' => 1, 'username' => 'Lorem ipsum dolor sit amet, consectetur adipisicing.'],
        ['id' => 2, 'username' => 'Lorem ipsum dolor sit.'],
        ['id' => 3, 'username' => 'ruby'],
    ];
    $isBoolean = false;
    $info = '這個(gè)是真的!';


    return view('show', compact('title', 'userData', 'info', 'isBoolean'));

});

show.blade.php視圖文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link  rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/2.0.1/jquery.js"></script>  
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>
    
    <title>blade模板引擎</title>
</head>
<body>
    <div class="container">
        <h2>原生PHP</h2>
        <hr>
        <p><?php echo $title;?></p>
        <hr>
        {{-- 短標(biāo)記語(yǔ)法PHP --}}
        <p><?= $title;?></p>
        <hr>
        <h2>blade模板引擎</h2>
        {{-- 這兩個(gè)大括號(hào)被叫做 插值表達(dá)式,計(jì)算內(nèi)部的表達(dá)式设哗,最終的結(jié)果放置在這里 --}}
        {{-- vuejs 也是使用的插值表達(dá)式 --}}
        <p>{{ $title }}</p>
        <p>{{  1 + 1 }}</p>
        <p>{{  3 * 8 }}</p>
        <h2>邏輯運(yùn)算</h2>
        <p>{{ !false }}</p>
        {{-- 三目運(yùn)算 --}}
        <p>{{ 1 > 2 ? '假的' : '真的' }}</p>
        <hr>
        <h1>復(fù)合數(shù)據(jù)類型輸出</h1>
        @foreach ($userData as $v)
            <li>序號(hào): {{  $v['id'] }} 姓名: {{ $v['username'] }}</li>
            <hr>
        @endforeach
        <hr>
        @if ( $isBoolean )
            {{  $info }}
        @endif
        <hr>
        @if ( $isBoolean )
            這個(gè)是真的...........
        @else
            假的的...........
        @endif
    </div>
    {{-- 問(wèn)題: laravel和 vue 相遇了  --}}
    <div class="container">
        <div id="box">
            {{-- 不想讓 laravel進(jìn)行解析唱捣,前端vuejs 在瀏覽器里面解析 --}}
            {{-- vuejs 前端MVVM框架 --}}
            <p>@{{  msg }}</p>
        </div>
    </div>
</body>
<script src="https://cdn.bootcss.com/vue/1.0.23/vue.js"></script>
<script type="text/javascript">
    new Vue({
        el: '#box',
        data: {
            'msg' : 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint, distinctio doloremque assumenda dicta veritatis repellendus maxime ut commodi ipsum necessitatibus ullam nihil! Saepe ab labore aliquam facilis placeat id incidunt.'
        }

    });
</script>
</html>

login.blade.php視圖文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link  rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/2.0.1/jquery.js"></script>  
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>
    <title>user-login頁(yè)面</title>
</head>
<body>
    <div class="container">
        <h1 class="page-header">user-login頁(yè)面</h1>
        <hr>
        <h2>原生PHP</h2>
        <?php echo date('Y-m-d H:i:s');?>
        <hr>
        <h2>blade模板引擎</h2>
        <p>{{ time() }}</p>
        <hr>
        <p><?php echo $info;?></p>
        <hr>
        <p class="well"><?php echo $title;?></p>
        <hr>
        <p class="well"><?php echo $key;?></p>
        <hr>
        <p><?php echo $age;?></p>
        <hr>
        <h2>復(fù)合數(shù)據(jù)類型: 數(shù)據(jù)遍歷操作</h2>
        <ul>
            <?php foreach ($userData as $v): ?>
                <li>序號(hào): <?php echo $v['id'];?> 姓名: <?php echo $v['username'];?></li>
                <hr>
            <?php endforeach ?>
        </ul>
    </div>
    
    
    <div class="container">
        <form action="" method="POST">
            <div class="form-group">
                <label for="username">用戶名:</label>
                <input type="text" name="username" id="username" class="form-control" value="">
            </div>
            <div class="form-group">
                <label for="password">密碼:</label>
                <input type="password" name="password" id="password" class="form-control" value="">
            </div>
            <div class="form-group">
                <input type="submit" value="提交" class="btn btn-success">
                <input type="reset" value="清空" class="btn btn-danger">
            </div>
        </form>
    </div>
</body>
</html>

4、控制器使用

通過(guò)上面的操作网梢,我們發(fā)現(xiàn)基本將代碼都寫(xiě)在routes.php路由文件震缭,這樣不利于后期的開(kāi)發(fā)和維護(hù)。一般會(huì)將用戶的請(qǐng)求交給控制器下的某個(gè)方法來(lái)處理战虏。在方法里面完成業(yè)務(wù)邏輯拣宰。

思考:

  1. 控制器寫(xiě)在哪里?
  2. 控制器文件名如何命名烦感?
  3. 控制器里面的內(nèi)容如何編寫(xiě)巡社?
  4. 控制器里面如何載入視圖?
  5. 控制器里面如何賦值手趣?
  6. 控制器里面的方法如何被調(diào)用晌该?
  7. 如何在控制器里面實(shí)例化模型?
  8. 如何通過(guò)模型獲取數(shù)據(jù)绿渣?

5朝群、artisan命令-控制器

使用 artisan 命令生成控制器的默認(rèn)行為

image.png

效果:

image.png

代碼內(nèi)容:

image.png

使用 artisan 命令生成控制器的不要帶方法

image.png

代碼內(nèi)容:

image.png

使用 artisan 命令生成控制器的分目錄管理

image.png

代碼內(nèi)容:

image.png

常見(jiàn)錯(cuò)誤

加密密鑰生成

image.png

解決:

image.png

404錯(cuò)誤

如果沒(méi)有在路由文件里面定義路由規(guī)則,直接請(qǐng)求怯晕,會(huì)提示如下的信息:

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末潜圃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舟茶,更是在濱河造成了極大的恐慌谭期,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吧凉,死亡現(xiàn)場(chǎng)離奇詭異隧出,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)阀捅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)胀瞪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人饲鄙,你說(shuō)我怎么就攤上這事凄诞。” “怎么了忍级?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵帆谍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我轴咱,道長(zhǎng)汛蝙,這世上最難降的妖魔是什么烈涮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮窖剑,結(jié)果婚禮上坚洽,老公的妹妹穿的比我還像新娘。我一直安慰自己西土,他們只是感情好讶舰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著翠储,像睡著了一般绘雁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上援所,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天庐舟,我揣著相機(jī)與錄音,去河邊找鬼住拭。 笑死挪略,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滔岳。 我是一名探鬼主播杠娱,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谱煤!你這毒婦竟也來(lái)了摊求?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刘离,失蹤者是張志新(化名)和其女友劉穎室叉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體硫惕,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茧痕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恼除。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踪旷。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豁辉,靈堂內(nèi)的尸體忽然破棺而出令野,到底是詐尸還是另有隱情,我是刑警寧澤徽级,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布彩掐,位于F島的核電站,受9級(jí)特大地震影響灰追,放射性物質(zhì)發(fā)生泄漏堵幽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一弹澎、第九天 我趴在偏房一處隱蔽的房頂上張望朴下。 院中可真熱鬧,春花似錦苦蒿、人聲如沸殴胧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)团滥。三九已至,卻和暖如春报强,著一層夾襖步出監(jiān)牢的瞬間灸姊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工秉溉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留力惯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓召嘶,卻偏偏與公主長(zhǎng)得像父晶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弄跌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345