安裝
- Mac環境:一切可以用brew搞定
- brew安裝valet
- brew安裝php7.1+
- 將macOS自帶的PHP升級到最新
- brew安裝redis
- brew 安裝MySQL 5.7+
- Windows環境:
- 安裝wamp【Apache】 || vargrant,docker【Nginx】 || phpStudy (本次選用phpStudy)
- php配置環境變數: 在phpStudy目錄下找到php.exe 所在目錄(\php\PHPTutorial\php\php-7.1.13-nts)【
- php必須配置環境變數之後才能安裝composer
- 可能需要開啟OpenSSL才能安裝composer【phpStudy--開啟配置檔案--php.ini檔案中將extend OpenSSL 前面的分號去掉】
- 安裝composer:【下載安裝包解壓即可】必須安裝composer才能安裝laravel https://getcomposer.org/download/
- 安裝laravel: 本次選用laravel框架 https://www.golaravel.com/ http://laravelacademy.org/post/5744.html
通過Laravel安裝器:(首先,通過 Composer 安裝 Laravel 安裝器)
composer global require "laravel/installer"複製程式碼
確保
~/.composer/vendor/bin
在系統路徑中,否則不能在任意路徑呼叫laravel
命令。安裝完成後,通過簡單的
laravel new
命令即可在當前目錄下建立一個新的 Laravel 應用,例如,laravel new blog
將會建立一個名為blog
的新應用,且包含所有 Laravel 依賴。該安裝方法比通過 Composer 安裝要快很多:laravel new blog複製程式碼
通過composer create-project,你還可以在終端中通過 Composer 的
create-project
命令來安裝 Laravel 應用:composer create-project --prefer-dist laravel/laravel blog複製程式碼
- 安裝redis: http://www.runoob.com/redis/redis-install.html
- github教程:https://github.com/ServiceStack/redis-windows
- 安裝包地址: https://github.com/ServiceStack/redis-windows/raw/master/downloads/redis-latest.zip
- 先到github上面下載zip包,然後放到C盤program file下面解壓 ( windows版:https://github.com/MSOpenTech/redis/releases )
- 檔案介紹:- redis-benchmark.exe #基準測試- redis-check-aof.exe # aof- redischeck-dump.exe # dump- redis-cli.exe # 客戶端- redis-server.exe # 伺服器- redis.windows.conf # 配置檔案
- 啟動Redis : 使用命令【redis-server.exe redis.windows.conf】,啟動redis 服務。
- 安裝完redis並啟動之後,安裝predis擴充套件【laravel需要用到】:$ composer require predis/predis . 這時候可能存在重名問題,laravel專案中的config/database.php 需要修改redis配置。redis預設是沒有設定密碼的,只需要把redis password欄位註釋掉【或者可以將env中的redisPassword值置為null,記得重啟php artisan serve】
- 開啟專案(php artisan serve), 專案.env檔案連線好本地資料庫,啟用redis,啟動postman,測試介面地址
- redis啟動命令:
- redis-server.exe redis.conf win7
常用的redis服務命令:
解除安裝服務:redis-server --service-uninstall
開啟服務:redis-server --service-start
停止服務:redis-server --service-stop
- 附加工具:
- 安裝cmder,命令列工具
- 安裝 Navicat , MySQL 5.7+
入門demo
新手入門指南---簡單任務管理系統:laravelacademy.org/post/3291.h…
- 安裝依賴: $ composer install
- 執行laravel專案: $ php artisan serve // artisan 是laravel的命令介面
- 資料庫遷移:用php程式碼完成資料庫表的建立和修改
- $ php artisan make:migration create_tasks_table --create=tasks
- $ php artisan migrate //如果已有專案,則直接遷移資料表
- Eloquent 模型:
- Laravel 使用的預設ORM(物件關係對映)是Eloquent,Eloquent使用模型讓資料存取變得簡單輕鬆,通常每一個Eloquent模型都有一個與之對應的資料表
- $ php artisan make:model Task 建立一個與剛建立的task表對應的task模型
CSRF 攻擊
http://laravelacademy.org/post/7820.html
CSRF(跨站請求偽造):通過偽裝授權使用者的請求來攻擊授信網站的惡意漏洞
在laravel應用中定義html表單,都需要引入CSRF令牌欄位,這樣CSRF中介軟體才能對請求進行驗證,使用輔助函式 csrf_field() 可以生成包含CSRF令牌的隱藏輸入欄位
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>複製程式碼
中介軟體:路由 跳轉之前的檢驗層
$php artisan make:middleware CheckToken //在app/Http/MiddleWare檔案下生成CheckToken.php檔案
中介軟體分三類:
- 全域性中介軟體: 一般很多地方需要用到的中介軟體就放在這裡
- 中介軟體組 :
app/Providers/RouteServiceProvider
自動將中介軟體組web
應用到routes/web.php
檔案,將中介軟體組api
應用到routes/api.php
- 指定路由中介軟體:$routeMiddleware 預設情況下,$routeMiddleware 包含一些laravel自帶的中介軟體。自己的中介軟體只需要在後面追加,並分配一個key
MySQL
- Migration: 有版本控制的資料庫
- Eloquent:非常強大的 Eloquent ORM , 通過 ORM 可以輕鬆對 DB 進行 增刪查改(CURD:create,update,read,delete)操作
- tinker 工具: 在命令列中執行資料庫的增刪查改操作
- DB builder: 資料庫查詢構建器
- \DB::enableQueryLog(); $query->get(); dd(\DB::getQueryLog()); 輸出執行語句
Trait
Trait 是php5.4引入的新概念,看上去既像類又像介面,其實都不是。
Trait 可以看做類的部分實現,可以混入一個或多個現有的PHP類中。
作用:表明類可以做什麼,提供模組化實現
Trait是一種程式碼複用技術,為php的單繼承限制提供了一套靈活的程式碼複用機制
PHP基礎
OOP程式設計:Object Oriented Programming 物件導向程式設計
public:類中,類外使用
protected:只能在類和繼承類中使用,不能在類外使用
private:只能在類裡面使用,不能在類外使用
父類:公共方法可以放在父類中,
子類:子類預設繼承父類的所有方法,可以重新定義父類同名方法
抽象類【abstract class】:類的基礎上再推進了一層,不能通過new來例項化抽象類。一旦抽象類中宣告有一個抽象方法【abstract public function getArea(),這裡不能用大括號,否則會報錯】,則抽象類的子類必須實現該方法,否則就會報錯,保證程式的一致性
介面【interface】:跟抽象類有點相似,【把介面比喻成契約協議。勞動合同:介面,合同條款:介面中的方法,implements:按手印】
依賴注入:blog.csdn.net/u011250882/…
<?php
interface Logger {
public function save($msg);
}
class FileLogger implements Logger{
public function save($msg)
{
var_dump('file'.$msg);
}
}
class DBLogger implements Logger{
public function save($msg)
{
var_dump('DB'.$msg);
}
}
class UserController{
protected $logger;
public function __construct(Logger $logger) //依賴注入
{
$this->logger = $logger;
}
public function register()
{
$user = 'jelly';
$this->logger->save($user);
}
}
$user = new UserController(new DBLogger('file')); // 在某處需要換一個依賴注入的時候只需要修改一個
$user->register();複製程式碼
名稱空間namespace:比喻成檔案和資料夾,路徑。
自動載入:解決多個require引入的問題 【一般一個類一個檔案】
可以在composer.json 中加入 autoload:{}【使用psr-4或者psr-0自動載入標準】,然後執行composer install 。最後在 單檔案入口中引入 vender/autoload.php 【入後檔案:public/index.php】
靜態屬性和靜態方法:
- 可以直接用 Math::add() 呼叫,
- 類的變數變化之後是儲存在類裡面而不是例項裡面