iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
2
Software Development

PHP新手30天實戰金流系列 第 1

[Day 1] 認識LARAVEL

tags: PHP新手30天實戰金流, Laravel

前言

嗨大家好,我是沙拉,第一次參加鐵人,希望挑戰自己的同時,提供的資訊也能幫到有興趣的朋友們。沙拉以一個串接金流的小平台作為題目。由於也是php新手,所以一切從零開始。免擔心,GO!

安裝 php, Apache, Mysql, composer, laravel。

作業系統:
MacOS Mojave 10.14.4

Outline

  • DIY part1 -- hello world
  • DIY part2 -- Database
  • DIY part3 -- Global settings

沙拉遇到的問題有2:

  1. 執行 php artisan serve 失敗:laravel 要求 PHP>=7.2,php升級之後就ok了
  2. php連接 mysql 失敗:server requested authentication method unknown to the client {caching_sha2_password}
    其原因為 mysql 8開始,使用者的身份驗證的方式預設為 caching_sha2_password, 不過php這邊還沒有對應的插件,因此解決辦法為:將 mysql的身份驗證方式降回最初的方式。
    作法: 在 /usr/local/etc/my.cnf 中的[mysqld]下 加default_authentication_plugin=mysql_native_password

初次見面新框架,先了解架構

Root Directory

  •   app - core/images/emoticon/emoticon12.gif
  •  bootstrap - 這系列不會用到(cache)
  •  config 
  •  database 
  •  public - web server的進入點就是讀 index.php 這檔案 (assets(image, css, or js))
  •  resources - 這系列不會用到 un-compiled assets(LESS, SASS, or JavaScript)
  •  routes - 重要 web.php, api.php(stateless,token), and console.php.
  •  storage - 這系列不會用到 app, framwork, log(web server 發生 error 會自動在這裏寫 log)
  •  tests 
  •  vendor - 這系列不會用到 Composer dependencies.
  •  composer.json - 若要更新套件版本, 可直接修改, 在執行 composer install指令

App Directory

劃掉代表非預設的資料夾,目前不會用到。這幾天主要的操作都會在 Http資料夾下。

  • Console - custom Artisan commands 這系列不會用到
  • Events
  • Exceptions 這系列不會用到
  • Http - 重要 controllers, middleware, and form requests
  • Jobs
  • Listeners
  • Mail
  • Notifications
  • Policies
  • Providers - binding services 這系列不會直接去寫到

DIY part1 -- hello world

我們先用 Laravel 新增一個專案:laravel new test, 接著到專案的目錄下: cd test

  1. 執行php artisan serve後,瀏覽器開啟 http://localhost:8000/ 會看到 Laravel預設的畫面!讚讚!

  2. 接著我們修改 resources/views/welcome.blade.php的 "Laravel"為 "Laravel shop"(84行) 看看。 blade 為一強大模板(Template),我們只要save 畫面就會改變,不用重啟 server。

  3. 加入身份驗證功能

    1. laravel 版本 6 以前執行 php artisan make:auth
    2. laravel 版本 6 執行 php artisan ui vue --auth
  4. npm install && npm run devgit 偵測到有 4個變更
    package-lock.json
    public/css/
    public/js/
    public/mix-manifest.json

    public 的 js 是藏了許多魔法打包好的 js 。我們要編輯的是 resourcces 裡的 js。

沙拉遇到的問題

  1. Command "make:auth" is not defined.
    laravel 6 將 auth 獨立出來, 所以要手動載入 ui套件 :
    1. composer require laravel/ui

      modified:   composer.json
      modified:   composer.lock
      
    2. 再執行 php artisan ui vue --auth

        modified:   package.json
        modified:   resources/js/app.js
        modified:   resources/js/bootstrap.js
        modified:   resources/sass/app.scss
        modified:   routes/web.php
        modified:   webpack.mix.js
        deleted:    yarn.lock
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        app/Http/Controllers/HomeController.php
        resources/js/components/
        resources/sass/_variables.scss
        resources/views/auth/
        resources/views/home.blade.php
        resources/views/layouts/
    
    

DIY part2 -- Database

  1. 在 mysql 裡建立帳戶:
    1. 開啟 terminal, mysql -u root -p 進去後
    2. 建立帳戶:mysql>CREATE USER 'sarahcheng'@'localhost' IDENTIFIED WITH mysql_native_password BY 'www^0^Yoyo409';
    3. 看一下現有帳戶:SELECT user FROM mysql.user GROUP BY user;
    4. 接著 讓這個帳戶有權利存取所有 DB:mysql>GRANT ALL PRIVILEGES ON *.* TO 'sarahcheng'@'localhost';
  2. quit出來,用 mysql -u sarahcheng -pwww^0^Yoyo409 進去看看
    1. CREATE DATABASE pets;之後,看一下現有資料庫SHOW DATABASES;
  3. 回到 php 專案,將 .env中的資料庫資訊改為剛剛設定的
    1. 執行 php artisan migrate
    2. 可以登入了

DIY part3 -- Global settings

  1. 我們想要將所有的'Laravel'取代為 'Laravel shop',我們先觀察 resources/views/layouts/app.blade.php中 title 是看app的全域變數
  2. 我們可以看到在 config/app.php中,name是來自環境變數 APP_NAME:
    'name' => env('APP_NAME', 'Laravel'),
    
  3. 因此我們到 .env 中設定:
    APP_NAME="Laravel Shop"
    p.s. 假如環境變數有空白,要加上雙引號。若無,則直接設定即可,如:APP_NAME=Laravel_Shop

OK 今天先到這裡! 明天要來玩 API 囉!^0^
晚生學習分享所學經驗,若內容有誤或不清楚,煩請不吝指教!更是歡迎各位大神多多補充,感謝萬分!


下一篇
[Day2] DB資料填充 + 初探 Laravel API
系列文
PHP新手30天實戰金流34

尚未有邦友留言

立即登入留言