- 投稿日:2019-06-25T21:33:56+09:00
laravelをAWS EC2にデプロイする
はじめに
vagrantなどのローカル開発環境で作成したlaravelプロジェクトをAWSのEC2上にデプロイする時に色々迷ったので、まとめとしてあげます。本番サーバにAWSを使ってみたいという方に見て頂ければと思います。
環境
php7.2.18
apache2.4.39
laravel5.7
EC2(Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type 無料枠)
RDS(mysqlを使用)前提
・ローカルで開発したプロジェクトをすでにgithubにプッシュ済み
・EC2にSSH接続できている
・EC2からRDSへ接続できる設定ができている(セキュリティグループなど)PHP7.2インストール
インストールできるリスト確認 sudo yum list available | grep php72 インストール sudo yum install -y \ php72 php72-devel php72-fpm php72-gd php72-mbstring \ php72-mysqlnd php72-pdo \ php72-xml php72-json インストール済みを確認 sudo yum list installed | grep php72 バージョン確認 php -vMysqlインストール RDSとの接続
インストール sudo yum -y install mysql 接続 mysql test_db -h <エンドポイント> -P 3306 -u test_user -papacheインストール
sudo yum install -y httpd24上記の流れでインストールを進めていると、なぜかすでにインストール済みと出た。
どこで入れたかわからなかった。
続きの設定を行っていくwabサーバの起動 sudo service httpd start システムがブートするたびにapacheが起動するよう設定 sudo chkconfig httpd on 有効か確認 chkconfig --list httpdドキュメントルートの権限変更
ユーザをapacheグループに追加 sudo usermod -a -G apache ec2-user 一旦ログアウト exit グループのメンバーシップを検証 groups グループ所有権をapacheグループに変更 sudo chown -R ec2-user:apache /var/www グループの書き込み許可追加 sudo chmod 2775 /var/www サブディレクトにグループ ID を設定するには、/var/www とサブディレクトのディレクトリ許可 find /var/www -type d -exec sudo chmod 2775 {} \; グループ書き込み許可を追加するには、/var/www とサブディレクトリのファイル許可を再帰的に変更します。 find /var/www -type f -exec sudo chmod 0664 {} \;Gitインストール
sudo yum install gitcomposer自身のインストール
インストール sudo curl -sS https://getcomposer.org/installer | php パスを通す sudo mv composer.phar /usr/local/bin/composerLaravelプロジェクトのClone
cd /var/www/html git clone <URL>apacheのドキュメントルート設定
設定ファイルを開く sudo vi /etc/httpd/conf/httpd.conf 以下に変更 DocumentRoot "/var/www/html/自分のlaravel_project/public 最終行に以下を追記 # .htaccess 有効化 <Directory /var/www/html/自分のlaravel_project/public> AllowOverride All </Directory>Laravelプロジェクトでcomposer インストール
cd /var/www/html/laravelプロジェクト composer installconfig, routeのキャッシュクリア
php artisan config:cache php artisan route:cacheプロジェクトのパーミッション変更
chmod 777 storage -R chmod 777 bootstrap/cache -R.envの設定
git cloneしたLaravelプロジェクトには.envファイルがないので、
composer insatallで作成された、.env.exsampleを使用するcp .env.example .env vi .env APP_URL=http://IPアドレス ←サーバーのIPにする DB_CONNECTION=mysql DB_HOST=←RDSのエンドポイント DB_DATABASE=データベース名 DB_USERNAME=RDS作成時のユーザ名 DB_PASSWORD=設定したパスワードキーを作成し、キャッシュをクリアする
php artisan key:generate php artisan config:clearテーブル作成
php artisan migrateシンボリックリンクの作成
これは作成したアプリで画像アップロードしているような場合は必要かと思います。
php artisan storage::linkブラウザで確認する
あとはブラウザでEC2のIPアドレスを入力するだけです!
ここまでくればブラウザで正しく表示されるかと思います!参考
https://qiita.com/reflet/items/11ad79e01e808876caa1
https://nori-life.com/install-laravel-aws/
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html
https://qiita.com/takg/items/9a044b36cdf216a42ba6
https://qiita.com/nbapps_dev/items/9307e6fc0edb59c09181
- 投稿日:2019-06-25T19:43:45+09:00
PHP_CodeSniffierのインストール、使い方
環境
CentOS 7.5
composer 1.7.2
PHP 7.2
Laravel 5.7.11インストール
$ composer require --dev "squizlabs/php_codesniffer=*"devオプションで開発環境でのみインストールするようにする。packagistの記載ではglobalオプションをつけているが、プロジェクトのみで使用するためつけていない。
インストールが完了すると、codesnifferを使用できるようになるので、ヘルプを表示してみる。
$ cd プロジェクトフォルダパス $ ./vendor/bin/phpcs -h Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors] [--cache[=<cacheFile>]] [--no-cache] [--tab-width=<tabWidth>] [--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFile>] 以下省略使い方
デフォルトで使用可能なコーディング規約を確認
$ ./vendor/bin/phpcs -i The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz and Zendプロジェクトのルートディレクトリ直下にphpcs.xmlを作成(これがルールファイルになる)。以下はPSR-1とPSR-2の規約をチェックするルールファイル。プロジェクト直下のnode_modules, storage, vendorディレクトリはチェック対象外とする。
<?xml version="1.0"?> <ruleset name="Custom Standard"> <rule ref="PSR2"> <!-- "PSR2" の中で除外するルールがあれば記載 --> <!--<exclude name="Generic.Files.LineLength"/>--> <!--<exclude name="PSR1.Classes.ClassDeclaration"/>--> </rule> <!-- 追加するルールがあれば記載 --> <!--<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent"/>--> <!-- 除外するファイル・ディレクトリ --> <exclude-pattern>node_modules/</exclude-pattern> <exclude-pattern>storage/</exclude-pattern> <exclude-pattern>vendor/</exclude-pattern> </ruleset>設定したチェックルールの一覧を確認する。
$ ./vendor/bin/phpcs -e The PSR2 Rule Set standard contains 42 sniffs Generic (12 sniffs) ------------------- Generic.ControlStructures.InlineControlStructure Generic.Files.ByteOrderMark Generic.Files.LineEndings 以下省略各ルールとチェックしている規約の内容はこちらを参考にさせていただきました。
PHP CodeSnifferにおけるPSR1,2の検知箇所と対応するSnifferphpcs.xmlではルールとしてPSR2のみを指定したが、チェックするルール自体は以下ファイルに記載されており、この中にPSR-1が記載されているので、PSR-1とPSR-2の両方がチェックされる事が分かる。
src/Standards/PSR2/ruleset.xmlファイル別に結果を出力
$ ./vendor/bin/phpcs --report=summary . PHP CODE SNIFFER REPORT SUMMARY --------------------------------------------------------------------------------------- FILE ERRORS WARNINGS --------------------------------------------------------------------------------------- /var/www/html/app/Http/Controllers/Admin/Test1Controller.php 0 2 /var/www/html/app/Http/Controllers/Admin/Test2Controller.php 6 2 /var/www/html/app/Http/Controllers/Admin/Test3Controller.php 0 2 /var/www/html/app/Http/Controllers/Admin/Test4Controller.php 7 7 /var/www/html/app/Http/Controllers/Admin/Test5Controller.php 0 6 --------------------------------------------------------------------------------------- A TOTAL OF 13 ERRORS AND 19 WARNINGS WERE FOUND IN 5 FILES --------------------------------------------------------------------------------------- PHPCBF CAN FIX 13 OF THESE SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------------------------ルール別に結果を出力
$ ./vendor/bin/phpcs --report=source /path/to/code PHP CODE SNIFFER VIOLATION SOURCE SUMMARY ------------------------------------------------------------------------------------------- STANDARD CATEGORY SNIFF COUNT ------------------------------------------------------------------------------------------- [ ] Generic Files Line length too long 19 [x] PSR2 Methods Function call signature multiple arguments 4 [x] PSR2 Methods Function call signature content after open bracket 3 [x] PSR2 Methods Function call signature close bracket line 2 [x] PSR2 Methods Function call signature indent 2 [x] Squiz Control structures Control signature space after close parenthesis 1 [x] Squiz Control structures Control signature space after keyword 1 ------------------------------------------------------------------------------------------- A TOTAL OF 32 SNIFF VIOLATIONS WERE FOUND IN 7 SOURCES ------------------------------------------------------------------------------------------- PHPCBF CAN FIX THE 6 MARKED SOURCES AUTOMATICALLY (13 VIOLATIONS IN TOTAL) -------------------------------------------------------------------------------------------結果レポートをファイルとして出力。
プロジェクトフォルダ直下のresult以下にtest_phpcs.xmlファイルが作成される。$ ./vendor/bin/phpcs --report=checkstyle --report-file=result/test_phpcs.xml .
- 投稿日:2019-06-25T19:43:45+09:00
PHP_CodeSniffierのインストールと使い方
環境
CentOS 7.5
composer 1.7.2
PHP 7.2
Laravel 5.7.11インストール
$ composer require --dev "squizlabs/php_codesniffer=*"devオプションで開発環境でのみインストールするようにしている。packagistの記載ではglobalオプションをつけているが、composerのホームディレクトリにインストールしない場合は不要。
インストールが完了すると、codesnifferを使用できるようになるので、ヘルプを表示してみる。
$ cd プロジェクトフォルダパス $ ./vendor/bin/phpcs -h Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors] [--cache[=<cacheFile>]] [--no-cache] [--tab-width=<tabWidth>] [--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFile>] 以下省略使い方
デフォルトで使用可能なコーディング規約を確認
$ ./vendor/bin/phpcs -i The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz and Zendプロジェクトのルートディレクトリ直下にphpcs.xmlを作成(これがルールファイルになる)。以下はPSR-1とPSR-2の規約をチェックするルールファイル。プロジェクト直下のnode_modules, storage, vendorディレクトリはチェック対象外とする。
<?xml version="1.0"?> <ruleset name="Custom Standard"> <rule ref="PSR2"> <!-- "PSR2" の中で除外するルールがあれば記載 --> <!--<exclude name="Generic.Files.LineLength"/>--> <!--<exclude name="PSR1.Classes.ClassDeclaration"/>--> </rule> <!-- 追加するルールがあれば記載 --> <!--<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent"/>--> <!-- 除外するファイル・ディレクトリ --> <exclude-pattern>node_modules/</exclude-pattern> <exclude-pattern>storage/</exclude-pattern> <exclude-pattern>vendor/</exclude-pattern> </ruleset>設定したチェックルールの一覧を確認する。
$ ./vendor/bin/phpcs -e The PSR2 Rule Set standard contains 42 sniffs Generic (12 sniffs) ------------------- Generic.ControlStructures.InlineControlStructure Generic.Files.ByteOrderMark Generic.Files.LineEndings 以下省略各ルールとチェックしている規約の内容はこちらを参考にさせていただきました。
PHP CodeSnifferにおけるPSR1,2の検知箇所と対応するSnifferphpcs.xmlではルールとしてPSR2のみを指定したが、チェックするルール自体は以下ファイルに記載されており、この中にPSR-1が記載されているので、PSR-1とPSR-2の両方がチェックされる事が分かる。
src/Standards/PSR2/ruleset.xmlファイル別に結果を出力
$ ./vendor/bin/phpcs --report=summary . PHP CODE SNIFFER REPORT SUMMARY --------------------------------------------------------------------------------------- FILE ERRORS WARNINGS --------------------------------------------------------------------------------------- /var/www/html/app/Http/Controllers/Admin/Test1Controller.php 0 2 /var/www/html/app/Http/Controllers/Admin/Test2Controller.php 6 2 /var/www/html/app/Http/Controllers/Admin/Test3Controller.php 0 2 /var/www/html/app/Http/Controllers/Admin/Test4Controller.php 7 7 /var/www/html/app/Http/Controllers/Admin/Test5Controller.php 0 6 --------------------------------------------------------------------------------------- A TOTAL OF 13 ERRORS AND 19 WARNINGS WERE FOUND IN 5 FILES --------------------------------------------------------------------------------------- PHPCBF CAN FIX 13 OF THESE SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------------------------ルール別に結果を出力
$ ./vendor/bin/phpcs --report=source /path/to/code PHP CODE SNIFFER VIOLATION SOURCE SUMMARY ------------------------------------------------------------------------------------------- STANDARD CATEGORY SNIFF COUNT ------------------------------------------------------------------------------------------- [ ] Generic Files Line length too long 19 [x] PSR2 Methods Function call signature multiple arguments 4 [x] PSR2 Methods Function call signature content after open bracket 3 [x] PSR2 Methods Function call signature close bracket line 2 [x] PSR2 Methods Function call signature indent 2 [x] Squiz Control structures Control signature space after close parenthesis 1 [x] Squiz Control structures Control signature space after keyword 1 ------------------------------------------------------------------------------------------- A TOTAL OF 32 SNIFF VIOLATIONS WERE FOUND IN 7 SOURCES ------------------------------------------------------------------------------------------- PHPCBF CAN FIX THE 6 MARKED SOURCES AUTOMATICALLY (13 VIOLATIONS IN TOTAL) -------------------------------------------------------------------------------------------結果レポートをファイルとして出力。
プロジェクトフォルダ直下のresult以下にtest_phpcs.xmlファイルが作成される。$ ./vendor/bin/phpcs --report=checkstyle --report-file=result/test_phpcs.xml .■参考にさせていただきました
新標準PSRに学ぶきれいなPHP
https://www.slideshare.net/yandod/psrphpPSR-1 基本コーディング規約(日本語)
http://www.infiniteloop.co.jp/docs/psr/psr-1-basic-coding-standard.htmlPSR-2 コーディングガイド(日本語)
http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.htmlPHP PSR一覧 2017年版
https://qiita.com/rana_kualu/items/f41d8f657df7709bda0fPHP CodeSnifferにおけるPSR1,2の検知箇所と対応するSniffer
https://qiita.com/piotzkhider/items/c90dd9253e9822fab3a2
- 投稿日:2019-06-25T18:07:52+09:00
Laravelのdb:seedで1452エラーが出る
Laravelを触り始めて約一ヶ月の初心者です
つまづいたのでメモ結論としてはLaravelクエリビルダのdelete(というかMySQLのDELETE)ではauto_incrementがリセットされないという仕様が分かってなかったっていう話です
1つのUserに対して多数のItemが紐付く構造
userを削除した際はitemも削除するよう外部キーを持たせてあります2019_06_25_000000_create_item_table.phppublic function up() { Schema::create('items', function (Blueprint $table) { $table->bigIncrements('id'); $table->text('title'); $table->bigInteger('user_id')->unsigned(); $table->timestamps(); $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade'); }); }ユーザテーブルはLaravelデフォルトなので省略
↓こちらがseeder
UserTableSeeder.phppublic function run() { DB::table('users')->delete(); App\User::create([ 'name' => 'hoge', 'email' => 'hoge@example.com', 'password' => Hash::make('hogehoge'), ]); App\User::create([ 'name' => 'hage', 'email' => 'hage@example.com', 'password' => Hash::make('hagehage'), ]); }ItemTableSeeder.phppublic function run() { DB::table('items')->delete(); App\Item::create([ 'title' => '君という花', 'user_id' => '1', ]); App\Item::create([ 'title' => 'リライト', 'user_id' => '2', ]); }2つともseed時は一回deleteで全消ししてからデータを挿入します
一回migrate:refreshを挟まないとdb:seed出来ない問題
refreshせずにシーディングを実行すると1452エラーが出る
$ php artisan db:seed Seeding: UsersTableSeeder Seeding: ItemsTableSeeder Illuminate\Database\QueryException : SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint failsrefreshを挟むと何故か成功する
php artisan migrate:refresh
したあとにphp artisan db:seed
を再度実行$ php artisan migrate:refresh Rolling back: 2019_06_10_190034_create_items_table Rolled back: 2019_06_10_190034_create_items_table Rolling back: 2014_10_12_100000_create_password_resets_table Rolled back: 2014_10_12_100000_create_password_resets_table Rolling back: 2014_10_12_000000_create_users_table Rolled back: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table Migrating: 2019_06_10_190034_create_items_table Migrated: 2019_06_10_190034_create_items_table $ php artisan db:seed [~/dev/app/gaogao_gate/likes] Seeding: UsersTableSeeder Seeding: ItemsTableSeeder Database seeding completed successfully.(逆に)なんでや…
再度db:seedを実行、やっぱり1452のエラーが出る…
UserTableを確認してみたmysql> select id from users; +----+ | id | +----+ | 3 | | 4 | +----+ 2 rows in set (0.01 sec)id途中から始まってるやんけ!
どうやらdeleteではauto_incrementに設定したidがリセットされない様子(無知並感)
既に無いuser_idをitemに与えようとして1452エラーが出ていたようですどうしよう
これ見てdeleteじゃなくてtruncate使えばええやん!と思ったけどそうでも無い様子 (1701エラーを眺めながら)
外部キーがあると使えない…だと…(rollbackもできなくなる)deleteと同時にauto_incrementを1に戻してしまえばよい
そんな都合のいいクエリは無いみたいなのでdeleteの下にSQLを1行追加
UserTableSeeder.phpDB::table('users')->delete(); DB::unprepared("ALTER TABLE users AUTO_INCREMENT = 1 ");これでとりあえず解決したみたいです?
ていうかItemSeederでuser_idを数字で与えているのがそもそもダメなのでは…
- 投稿日:2019-06-25T17:16:35+09:00
【Laravel】GItLab CIでユニットテストを自動実行+カバレッジを出力してGitLab Pagesにホスティングする
自前で運用しているGitLab CE(Community Edition)で、Pipelineを利用して
LaravelアプリケーションのPHP Unitを自動で回す設定を作成した時のメモPHP Unit設定
PHP Unitを実行した際に、カバレッジのデータがHTMLとして出力されるように、以下の設定を行う
phpunit.xml<?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" bootstrap="vendor/autoload.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false"> ... 省略 + <logging> + <log type="coverage-clover" target="public/coverage/logs/clover.xml"/> + <log type="coverage-html" target="public/coverage"/> + </logging> </phpunit>
GitLab CI設定
Gitリポジトリのルート配下に
.gitlab-ci.yml
を作成する。.gitlab-ci.yml# composerによって生成されるvendor配下をキャッシュする cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/ # Build and Test php-7.2: &build image: php:7.2-cli-alpine variables: COMPOSER_VERSION: 1.8.6 script: # 必要なライブラリをインストール - apk add git autoconf build-base - pecl install xdebug - docker-php-ext-install mysqli pdo pdo_mysql - docker-php-ext-enable xdebug - curl https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar > composer.phar - php composer.phar install # .envの作成 - cp .env.example .env # ユニットテストの実行 - vendor/bin/phpunit --configuration phpunit.xml --coverage-text --colors=never artifacts: paths: # 生成したカバレッジレポートを、次のjobで利用する - public/coverage # 異なるPHPのバージョンを指定してジョブを回したい場合、 # 以下のように`build`アンカーを呼び出したうえで、別のalpineのimageを指定すればOK php-7.1: <<: *build image: php:7.1-cli-alpine # 以下のようにすれば、composerのバージョンを指定できる variables: COMPOSER_VERSION: 1.6.5 # Unitテストのカバレッジを、Gitlab Pagesにホスティングする pages: stage: deploy extends: php-7.2 artifacts: paths: - public only: - developこれで、GitLabのリモートリポジトリにgit pushすると自動でテストが走る。
以下のURLにアクセスすると、HTML出力したユニットテストのカバレッジが確認できる。
http://{GitLabドメイン}/{プロジェクト名}/coverage/
参考サイト
- 投稿日:2019-06-25T17:16:35+09:00
GItLab CIでユニットテストを自動実行+カバレッジを出力してGitLab Pagesにホスティングする
自前で運用しているGitLab CE(Community Edition)で、Pipelineを利用して
LaravelアプリケーションのPHP Unitを自動で回す設定を作成した時のメモPHP Unit設定
PHP Unitを実行した際に、カバレッジのデータがHTMLとして出力されるように、以下の設定を行う
phpunit.xml<?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" bootstrap="vendor/autoload.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false"> ... 省略 + <logging> + <log type="coverage-clover" target="public/coverage/logs/clover.xml"/> + <log type="coverage-html" target="public/coverage"/> + </logging> </phpunit>
GitLab CI設定
Gitリポジトリのルート配下に
.gitlab-ci.yml
を作成する。.gitlab-ci.yml# composerによって生成されるvendor配下をキャッシュする cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/ # Build and Test php-7.2: &build image: php:7.2-cli-alpine variables: COMPOSER_VERSION: 1.8.6 script: # 必要なライブラリをインストール - apk add git autoconf build-base - pecl install xdebug - docker-php-ext-install mysqli pdo pdo_mysql - docker-php-ext-enable xdebug - curl https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar > composer.phar - php composer.phar install # .envの作成 - cp .env.example .env # ユニットテストの実行 - vendor/bin/phpunit --configuration phpunit.xml --coverage-text --colors=never artifacts: paths: # 生成したカバレッジレポートを、次のjobで利用する - public/coverage # 異なるPHPのバージョンを指定してジョブを回したい場合、 # 以下のように`build`アンカーを呼び出したうえで、別のalpineのimageを指定すればOK php-7.1: <<: *build image: php:7.1-cli-alpine # 以下のようにすれば、composerのバージョンを指定できる variables: COMPOSER_VERSION: 1.6.5 # Unitテストのカバレッジを、Gitlab Pagesにホスティングする pages: stage: deploy extends: php-7.2 artifacts: paths: - public only: - developこれで、GitLabのリモートリポジトリにgit pushすると自動でテストが走る。
以下のURLにアクセスすると、HTML出力したユニットテストのカバレッジが確認できる。
http://{GitLabドメイン}/{プロジェクト名}/coverage/
参考サイト
- 投稿日:2019-06-25T13:53:28+09:00
laravel redis cache
laravel で redis キャッシュを使いたい。
ほんとだっるい。ついでに session も redis にしてやる。
CACHE_DRIVER=redis REDIS_HOST=133.230.222.333 REDIS_PASSWORD=null REDIS_PORT=6379 REDIS_DB=7 REDIS_READ_WRITE_TIMEOUT=60 SESSION_DRIVER=redisdatabase.php
'redis' => [ 'client' => 'predis', 'default' => [ 'host' => '133.230.222.333', 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => env('REDIS_DB', 7), ], 'cache' => [ 'host' => '133.230.222.333', 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => env('REDIS_CACHE_DB', 7), ], ],cache.php 18行目あたり
'default' => env('CACHE_DRIVER', 'redis'),これでredisに入れられます。
$name = 'hoge_1';//キャッシュの名前 $time = 3;//分 // キャッシュがあれば使う。なければ処理をして返す。 // {}内で変数を使いたい場合は use を使う // $data = Cache::remember($name,$time, function () use ($repeat,$social_id) { $data = Cache::remember($name,$time, function () { $data = "ほげ".time(); return $data; }); Cache::forget($name);//キャッシュを削除
- 投稿日:2019-06-25T13:50:23+09:00
【Laravel初心者】ルーティングとコントローラーの基礎知識
はじめに
こんにちは。てりーと申します!
プログラミング歴が4ヶ月目に入ろうとしているエンジニアです。今月からLaravelを触り始めたので、備忘録がてら記事の投稿をします。
ルーティングとコントローラについての基礎知識をさらっとまとめました。何かご指摘やアドバイス、感想を言って頂けると幸いです。
参考文献
「PHPプレームワーク Laravel入門」
2章 ルーティングとコントローラルーティング
ルーティングに関する情報は「routes」にまとまっています。
■ 一般的なwebサイト
webサーバーの公開フォルダにファイルを用意しておいて、そこにアクセスしたら表示される。■ Laravel
アドレスに割り付けられたプログラムが実行される。その際の関連付けを行うのがルーティングです。
例:「○○にアクセスすると,××という処理を施される」web.php
このファイルが一般的なwebサイトにアクセスする際に使うルーティングです。
web.php<?php Route::get('/', function () { return view('welcome'); });
'/'
の部分は第1引数に割り当てられるアドレスを指します。
function () {......}
の部分はそれによって呼び起こされる処理が入ります。
function () {
return view('welcome');
});
では、「resouces/view」フォルダにある「welcome.blader.php」をレンダリングして表示しています。コントローラー
具体的な処理を実装するために用意されているのがコントローラです。
LaravelはMVCと呼ばれるアーキティクチャーで、それぞれがM:model データ処理を担当
V:view 画面処理担当。表示用のテンプレートなど
C:controller 全体の制御担当。となっています。
aritsanコマンドでコントローラー作成
php artisan make:controller コントローラー名
「app/Http/controller」フォルダ内に作成される。
アクション追加
HelloController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { アクション }
class HelloController extends Controller
controllerのクラスを継承
{ アクション}
アクションメソットはここに入れる。web.phpRoute::get('hello','HelloController@index')ルート情報の設定。
Route::get('hello','コントローラー名@アクション名')
まとめ
Qiita初投稿は自分の備忘録として使わせていただきました。
Laravelに慣れていないので、概念的な所を掴むのに苦労しています。次はビューの部分をかじりつつ、実際にbladeテンプレートを作成してみたいと思います。
最後までご拝読ありがとうございました。