優総研

ポートフォリオ制作なうなんだが…その3

 

 

 

 

usersテーブルにカラムを追加する

 

カラムを追加・変更するにはdoctrine/dbalが必要なのでインストール

 

カラム追加用のmigrationファイルを作成します。

–table=<テーブル名>で指定します。

 

comment, websiteカラムを追加しました。commentやwebsiteで検索をかけることはないのでprofileテーブルを作ってなどして正規化はしない。

 

反映させます。

 

シード用のデータを削除しておく。

comment, websiteカラムを追加したシーディングファイルにアップデートする。

 

反映させます。

 

 

SNS機能関係のテーブルとモデルを作る

modelとテーブルは同時に作ることも出来る

 

 

 

 

Laravelノウハウ

 

 

基本クラスのエイリアス

 

Composerのクラスの場所

 

 

ルーティングが有効になっているかの確認

 

{{ asset(‘パス’) }}

publicフォルダからパスで読んでくれる。

 

名前空間を追加したら、クラスが見つからない?

 

  1. composer.jsonに追加する。
  2. 名前空間を変更した場合は、『composer dump-autoload』を行う

 

 

CSRF記述の変更 “419 Page Expired”

Laravel5.6以上から記述が「@csrf」になった。

{{ csrf_field() }}でも記述エラーにならないが、CSRF機能が動いていない罠がある。

@csrfを使おう!

 

composer updateとcomposer install

原則は「$ docker-compose exec php-fpm composer install」を利用する。

  • そうしないと共同開発しているときにパッケージでバージョンの違いが出てします。
  • composer updateはパッケージのバージョンを上げたい時のみ利用する
    アップデートして正常動作したら、composer.lockはpushする

 

 

composer installしたライブラリの利用

 


サービスプロバイダにライブラリのサービスプロバイダ用クラスを登録して呼び出す。

 

例として

composerでsocialiteをインストールした。これをサービスプロバイダに登録する

classであるSocialiteServiceProviderは、

Laravel\Socialite\SocialiteServiceProviderというパスであることがわかります。

 

  1. config/app.phpのprovidersにライブラリのクラスを登録する
  2. config/app.phpのaliasesにエイリアスを登録する
  3. ライブラリの呼び出し
    ・use <登録したエイリアス名>
    ・クラスの中でエイリアス名::利用したいライブラリの関数()

 

config/app.php

config/app.phpのprovidersに「Laravel\Socialite\SocialiteServiceProvider::class」で登録します。

 

aliasesにも登録します。

 

コントローラで利用する

Http/Controllers/Auth/SocialController.php

use Socialite;でエイリアスで登録している名前で呼び出す。

クラスの中で

エイリアス名::利用したい関数()で利用できる。

 

Illuminate関連の標準ライブラリの場所

確認出来る。

使いたい時は

名前空間とクラスを確認して、

useで利用できる。

 

外部キーのエラーでmigrateに失敗する

  • 子テーブルのカラムを親キーのカラムと型を合わせる
  • 親テーブルのファイルの日時を古く、子テーブルの日時を新しくする
    親が先に生成されないと、親を参照している子テーブルは作れない。

 

 

DI

  • クラスの中で別のクラスをnewしない。
  • コンストラクタやセッターで別クラスを、依存性を注入する

 

ファサード

  1. サービスコンテナ(クラス)を作成
  2. サービスプロバイダを作成しサービスを1のサービスコンテナを登録
  3. ファサードを作成し名前を付ける
  4. $ composer dump autoload
  5. config/app.phpパスを通す

メリット

  • 一連の機能をまとめてコントローラの肥大化を抑える
  • メンテナンス性の向上
  • 単純にインスタンス化するよりメモリを食わない

デメリット

  • クラスの依存関係がわかりにくくなる
    →DIで対応できる

 

@see

 

 

マジックメソッド

 

Dockerの削除

 

すべてのコンテナの停止、コンテナ削除、イメージ削除

 

GitHub

 

HEADに戻す

 

 

branch開発

 

●developブランチ

 

●masterブランチ

 

ローカルのdevelopブランチを削除

通常はこれでOK

 

消せない場合は下記で

 

 

 

※git merge developでのエラー

 

masterにコミットして

 

リモートリポジトリmasterブランチにpushする

 

 

ひやりはっと戻す

ローカルリポジトリをある地点まで戻したい

 


ローカルリポジトリをある地点まで戻し、リモートリポジトリも戻す※劇薬

 

コミットをまとめる

 

 

1つ以上pickを残してまとめたいコミットをsに変える

 

これで何事もなければ、

リモートリポジトリにpushして完了

 

※エラーが出た場合

 

git rebase –continueでコンフリクトしたファイルが見れるので修正する。VS Codeだとここらへんの修正が楽。

それからgit add -AしてリモートにpushでOK

 

なんか操作してミスしてりとかだったらrebaseの作業を破棄することで戻れる

 

 

issue機能

 

issue#<番号>でイッシュー用のブランチを作成し作業する

 

commitする時にissue番号を入れるとリンクが作成される。

issueでcommit番号のハッシュ値を張ることで、リンクが出来る。

masterにも反映させる

 

issue#1ブランチの削除

 

 

課題点

ポートフォリオとして作るのが第一目的なので最後に回す。

  1. Google Books APIの作者データの配列が不安定で、出力に作者名を持たせるのを断念。
    →Amazon PA APIか楽天APIに切り替える。
  2. ログイン認証
    メール認証の追加、ソーシャルログイン認証を洗練させる。
    ※非機能部分なので見えにくいので後回し。

 

@see

 

デプロイ

 

Laravel

 

ログイン

 

ルーティング

 

オブジェクト指向

 

 

Eloquant

 

 

データベース設計

 

SNSテーブル設計例

 

 

ロック, デッドロック

 

 

Session

 

テストコード

 

 

メール認証

 

テストコード

 

 

オブジェクトキャッシュ, Redis

 

 

PHP

 

 

JSON

 

 

Bootstrap

 

Ajax

 

 

その他

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)