IT業界未経験者を含めたPHP初心者のためのLaravelのプロジェクト作成
■Laravelプロジェクトのスケルトン作成
作成されるプロジェクトの場所はプロンプトの配下になります。
場所を変えたい場合は予め、ディレクトリーを移動してからコマンド入力してください。初期設定ではユーザ配下に作成されます。
1.「composer create-project --prefer-dist laravel/laravel projectTest」を入力し、Enterキーを押下します。
※projectTestがプロジェクト名になります、必要に応じて変更してください。
※作成には暫く時間がかかります。
補足:
以下の様なメッセージが出力されて作成できない場合は「php.ini」の「;extension=zip」の記述を探して「;」の記述を削除してください。
The zip extension and unzip/7z commands are both missing, skipping
2.作成が終わると以下の様になります。
■プロジェクトの読み込み
1.左上のアイコンを押下するとメニューが表示されます。
メニューから「フォルダーを開く」を押下してください。
補足:メニューが出ない場合は「ファイル」から「フォルダーを開く」の選択でも開く事ができます。
2.以下のようになるので作成した対象のフォルダー(ここではprojectTest)を選択します。
3.プロジェクを開くと下の様な画面になります。
※この時点でとりあえず、実行してみたい方は「https://note.com/fteneko2020/n/n50a26dd42de4」を参照ください。
■デバック環境の設定
スケルトンを作成した状態ではデバックの設定はされてないため、設定ファイルを変更します。
1.「プロジェクトディレクトリ/config/app.php」を開きます。
※app.phpをクリックすると右にソースが自動で表示されます。
2.137行目辺りの「 'providers' => 」配下の任意の場所に「Barryvdh\Debugbar\ServiceProvider::class,」を入力します。
3.「ctr+s」で保存します。
4.「ctr+@」でターミナルを開き、コマンドラインから「composer require barryvdh/laravel-debugbar」を入力し、Enterキーを押下してください。
※プロジェクト配下のプロンプト(この例ではプロンプトがprojectTest)でコマンドを実行して下さい。
(プロジェクト配下のファイルを書き換えるため)
5.赤枠の部分を押下し、プロジェクトのリロードを行います。
6.VScodeを一度終了して立ち上げなおします。
※追加したコードに波線が消えている事を確認します。
補足:正常に終了すると「projectTest\vendor\barryvdh\laravel-debugbar\src」の配下に「ServiceProvider.php」が生成されます。
補足:コマンドパレットからStart Serverを実行した状態で、赤枠を選択し▷を押下するとステップデバックできるようになります。
■データベースの環境設定
ここでは一般的に使用されるMySQLを例にします。
1.環境変数を設定
設定したくない場合は、毎回実行する時に「C:\xampp\mysql\bin」までディレクトリを移してから実行する必要が出ます。
設定しておく事をお勧めします。
1-1.mysql の実行環境を環境変数に「C:\xampp\mysql\bin」を設定します。
※xamppのインストール場所や、各OSによって手順が違うため、それぞれで確認して下さい。
1-2.OSを立ち上げなおしてください。
2.サービスの立ち上げ
OSを起動しただけではサービスが自動で立ち上がっていないため、先にサービスを立ち上げます。このサービスが立ち上がっていない場合、MySQLにコマンドを投げてもエラーになります。
2-1.インストールしたxamppの場所を開き、「xampp-control.exe」を立ち上げます。
2-2.管理画面から「MySQL」のActionsから「start」を押下します。
2-3.「アクセスを許可する」を押下してください。
2-4.これでデータベースが使用できる状態になります。
3.ログインの確認
念のため、作成したユーザでログインできるか確認します。
実際の業務開発は開発用のサーバー側に接続するケースの方が多いと思います。DBサーバーを立てる場合は別途、hostやportの設定も見直して下さい。
ここでの説明はローカルで使用する範囲に留めます。
3-1.左のメニュー下に表示されているドラム缶のようなアイコンをを押下し、表示が切り変わったら「+」のマークを押下します。
3-2.「username」「password」を入力し、「Connect」を押下します。
※初期設定ではrootのパスワードは設定されていないため入力しません。
3-3.成功するとリストにデータベースの状態が表示されます。
※赤枠を押下すると詳細が表示されます。
補足:任意のテーブルを選択すると現状で入力されているデータが表示できます。
4.rootのパスワードを設定
MySQLは初期状態にrootのパスワードが設定されていません。
セキュリティーの観点からも設定します。
※MySQLを使用する時は必ず「2.」の手順でプロセスを立ち上げて下さい。
(立ち上げない場合、「Can't connect to MySQL server on 'localhost' (10061)」といったエラーが出力されます。)
4-1.「mysql -u root」を入力し、Enterを押下します。
※「-p」のオプションはパスワード指定です、今回は使いません。
4-2.ログインが成功すると以下の状態になります。
4-3.「use mysql;」を入力し、Enterを押下します。
4-4.「alter user 'root'@'localhost' identified BY 'XXXX';」を入力し、Enterを押下します。
※この例ではrootのパスワード変更で、XXXXの場所がパスワードになります。
※今回はrootのパスワード設定に留めますが、出来れば新たに作業用ユーザを作成した方が望ましいです。rootユーザでログインした状態で以下のSQLを発行して下さい。「ユーザ名」「ホスト名」「パスワード」は任意です。
「CREATE USER 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード'; 」
※終了する場合は「exit」を入力し、Enterを押下してください。
■データ格納関係の構築
PHPの場合は規模が中小規模の場合が多いため、テーブル作成などの管理はプロジェクト内に保管されており、反映履歴を保持します。
(補足:大規模開発の場合、一般的にはテーブル作成や更新といった対応は色々な場所に影響が出る為に開発者が直接反映する事はしません。ダブルチェックの承認などを経て第三者が反映します。)
補足:テーブル作成やデータに関するソースは「database」に格納されています。
1.スキーマの作成
スキーマはテーブル(実際にデータを格納する箱)をカテゴリー化して格納するための箱です。
※インストール時に既存で作成してあるスキーマでも良ければ作成しなくても問題ありません。
1-1.MySQLにログインした状態で「create database (スキーマ名);」を入力し、Enterを押下します。
※ログインは「mysql -u root -p」を入力。
1-2.使用するスキーマに対して、アカウント権利を与えるため、「grant all privileges on (スキーマ名).* to mysql@localhost identified by 'mysql';」を入力し、Enterを押下します。
※詳しく知りたい方は「http://itdoc.hitachi.co.jp/manuals/3020/3020645750/W4570170.HTM」を参照ください。
1-3.envファイルにプロジェクト(このページの冒頭で作成してきたスケルトン)で使用する赤枠の「スキーマ」「ユーザ」「パスワード」を入力し、Enterを押下します。
2.マイグレーション(テーブル定義)の作成
マイグレーションは履歴管理されているため、rollbackすれば過去に遡って取り消しが利きます。
2-1.「php artisan make:migration (phpファイル名) --create (テーブル名)」を入力し、Enterを押下すると以下の様に新しくphpファイルが生成されます。
2-2.初回はこのように空が作成されています。
2-3.テーブルのカラム定義を作成するためのソースをupメソッドに入力します。
フォーマット例:$table->型名('カラム名');
以下は記載の一例です。
以下参考ソース:
Schema::create('m_user', function (Blueprint $table) {
$table->string('Id');
$table->dateTime('UpdateTime');
$table->text('Title');
$table->string('Category');
$table->text('selectItem1');
$table->boolean('yesNoFlag');
$table->integer('explainId')->nullable()->default(0);
$table->softDeletes();
$table->timestamps();
$table->unique(['Id']);
});
※uniqueは重複禁止、一意性制約をかけるものです。
3.シーダー(データ)の作成
ここで定義しておくと後々、データを消去したりしても復元する事ができます。
3-1.「php artisan make:seeder (シーダー名)」を入力し、Enterを押下すると以下の様に新しくphpファイルが生成されます。
3-2.DatabaseSeeder.phpに「$this->call((作成したシーダー名)::class);」を追加します。
3-3.初回はこのように空が作成されています。
3-4.2.で作成したテーブルのカラムに沿ってデータ投入用のソースをrunメソッドに入力します。
// データ全削除
\DB::table('m_user')->delete();
// データ投入
\DB::table('m_user')->insert([
'Id' => '28_1',
'UpdateTime' => new \DateTime(),
'Category' => '情報セキュリティ総論',
'Title' => '情報セキュリティの要素の一つである「真正性」の具体例・・・',
'selectItem1' => '',
'memo' => '',
'yesNoFlag' => true,
'explainId' => 0,
]);
※必要に応じて「alt+sift+F」でソース整形して下さい。
4.マイグレーションからのテーブル作成
4-1.「php artisan migrate」を入力し、マイクレーションに記載したテーブル作成情報をMySQLに投入し対象テーブルを作成します。
※この作業は初回でテーブルを新規作成する時に行います。
(ロールバックは「php artisan migrate:reset」を入力し、Enterを押下して下さい。)
4-2.正常に作成が終了すると対象のスキーマへテーブルが作成されます。
4-3.「php artisan db:seed」を入力し、データを登録します。
補足;以下の様にデータが作成されます。