PHP建立laravel專案

ShariseMo發表於2018-05-25

安裝

  • 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/PHP建立laravel專案
    • 安裝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建立laravel專案
    • 開啟專案(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檔案

PHP建立laravel專案

中介軟體分三類:

  • 全域性中介軟體: 一般很多地方需要用到的中介軟體就放在這裡
  • 中介軟體組 :app/Providers/RouteServiceProvider 自動將中介軟體組 web 應用到 routes/web.php 檔案,將中介軟體組 api 應用到 routes/api.php
  • 指定路由中介軟體:$routeMiddleware   預設情況下,$routeMiddleware 包含一些laravel自帶的中介軟體。自己的中介軟體只需要在後面追加,並分配一個key


MySQL

  1. Migration: 有版本控制的資料庫
  2. Eloquent:非常強大的 Eloquent ORM , 通過 ORM 可以輕鬆對 DB 進行 增刪查改(CURD:create,update,read,delete)操作
  3. tinker 工具: 在命令列中執行資料庫的增刪查改操作
  4. DB builder: 資料庫查詢構建器
  5. \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() 呼叫,
  • 類的變數變化之後是儲存在類裡面而不是例項裡面






相關文章