- 投稿日:2021-10-13T16:47:19+09:00
phpフレームワークLaravelって何?環境構築の前にちょっと待った!使用用途を徹底解説!!
絶対に読んで欲しい導入 HTML,PHPを学び、これからLaravelを使おうと思ったそこのエンジニアの皆さん、とりあえず環境構築してコードをググったらある程度使えるようになるだろうと思ってますよね。 確かにその通りです。 しかし実際に使用する前に便利な機能を把握し、Laravelではこんなことができるのかと知っておくことで格段に開発効率が上がります。 座学はエンジニアの皆さんにとってはそんなに面白いものではないかもしれませんが、こんな機能があるならこういうアプリが作れそうだ!などと言った想像を膨らませながら、楽しみながら読んでみてください!! そもそもLaravelって何? Laravelとは、PHPのフレームワークの1つです。 ※ PHPとは、Webページを動的に生成できるサーバーサイドのスクリプト言語です。 ※ フレームワークとは、アプリケーションを開発するとき、その土台として機能させるソフトウェアのこと。「アプリケーションフレームワーク」とも呼ばれる。「枠組み」「骨組み」「構造」などといった意味があり、土台となるフレームワークに必要な機能を追加し、アプリケーションの開発を進めていくのが一般的です。 使用用途や特徴 MVCモデルで製作を簡単に進めよう! 多機能なMVCフレームワークModel(データ処理)、View(画面表示)、Controller(全体の制御)でフロントエンドからバックエンドまで全てをこれ1つで網羅でき、デフォルトでサーバーサイドに必要なファイルが入っているから面倒な構築を省いて、webアプリをすぐに作成することができる! View LaravelではBlade(拡張子:.blade.php)というHTML形式のテンプレートエンジンを使ってUIを作成します。 1.共通レイアウトを作成する 各ページで同じUIを使用する場合に他ファイルで呼びだして使用する共通パーツを作成します。 ページごとに変更したい部分には@yield('content')と書く。 resources/views/master.blade.php <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Site Title</title> </head> <body> @yield('content') </body> </html> 2.共通レイアウトを利用してビュー画面を作成 @extend('共通レイアウトのファイル名')で共通レイアウトを読み込みます。 ここでは@extends('master')です。 共通レイアウトで@yieldした部分にページ別のコンテンツを流し込みます。 @section('content')と@endsectionの間にHTMLを記述します。 resources/views/pages(任意フォルダ名)/sample.blade.php(任意名) @extends('master') @section('content') <h1>sampleページ</h1> <p>これは共通レイアウトをつかったsampleページです。</p> @endsection Model Modelでは各種webアプリで使うデータベース(以下DBという)の構造を簡単に作成したり、作成したDBを操作、アクセスして利用するためのものです。 ※今回は実用的な、コマンドを使ったモデルの作成からテーブルに値を入れるまでを解説します。専門用語の説明は下記に記載してますので、先にそちらを見て頂いてもOKです。 1.artisan(アルティザン)コマンドでモデルを作成 Laravelのフォルダ直下に移動してコマンドラインで下記コマンドを打ちます。 php artisan make:model Product 上記コマンドを実行すると下記のProductというモデルがAppフォルダに作成されます。 app/Product.php namespace App; use Illuminate\Database\Eloquent\Model; class Product extends Model { // } Productモデルが操作できるテーブル名はproductsと自動的に決められます。 モデル名が小文字複数形になったものがテーブル名として使用される形です。 2.テーブルの作成 Laravelではマイグレーション機能を使うことでテーブルの作成を行います。 2_1.マイグレーションファイルの作成 artisanコマンドでテーブル名を指定し、マイグレーションファイルを作成します。 php artisan make:migration create_product_table --create=products 2_2.マイグレーションファイルの編集 2_1で作成されたマイグレーションファイルのup()関数の部分に追加したいカラムを記述します。 database/migrations/20xx_xx_xx_xxxxx(日付が自動的に入る)_create_products_table.php public function up() { Schema::create('products', function(Blueprint $table) { $table->increments('id');//自動でidが付与される $table->string('product_name'); // 追加 $table->int('price'); // 追加 $table->timestamps();//作成した時間が入る }); } 2_3.マイグレーションファイルの実行 コマンドプロンプトにArtisanコマンドを打ってマイグレーションファイルの実行をします。 php artisan migrate これでproductsテーブルが作成されます。 3.デフォルトレコードをDBに入れ込むためのシードを作成 3_1.コマンドでシーダーファイルを作成 php artisan make:seeder productTableSeeder 3_2.シーダーファイルの編集 試しに3つのデフォルトレコードを入れ込んでみましょう database/seeds/productTableSeeder.php <?php use Illuminate\Database\Seeder; class productTableSeeder extends Seeder { public function run() { $param = [ 'product_name' => 'MacbookPro', 'price' => 300000, ]; DB::table('products')->insert($param); $param = [ 'product_name' => 'Applewatch', 'price' => 60000, ]; DB::table('products')->insert($param); $param = [ 'product_name' => 'Airpods', 'price' => 20000, ]; DB::table('products')->insert($param); } } 3_3.シードの実行 php artisan db::seed これでseederファイルのrun()が実行され、productsテーブルにデフォルトレコードが追加されます。 Controller ControllerはModelとViewをつなげる役割を果たします。 具体例を挙げるなら、modelからDBにアクセスし、取得したデータを加工してviewに渡したり、逆にviewから受け取ったデータをmodelに渡して、DBに保存します。 ※今回はViewのファイルをコントローラーで呼び出してルート情報をつけるsampleを作成します。 1.Controllerファイルを作成 artisanコマンドでControllerファイルを作成します。 php artisan make:controller SampleController 2.メソッドを追加する メソッドを作成して、Viewファイルを呼び出します。 app\Http\Controllers\SampleController.php class SampleController extends controller { public function getIndex() { return view('sample');//Viewのbladeファイルを呼び出す。 } } これで、Viewファイルの呼び出しが完了しましたが、まだ必要な作業があります。 3.web.phpにルート情報を記述する ページを表示させるためにルート情報(URLになるもの)をweb.phpに記載します。 routes\web.php Route::get('/sample','SampleController@getIndex'); これで、localhost:8080でLaravelを起動した場合、localhost:8080/sampleで指定したviewファイルが表示されることになります。 MVCモデルはこのようにModel,View,Controllerを軸に作成していきます。 パッケージツール composerでライブラリを便利に管理! composerとは、PHPのライブラリ管理ツールです。 ライブラリというのは、ライブラリ1を使いたい!!と思うとそれを使うためには、ライブラリ2.3の2つのライブラリもダウンロードしないといけないなどという依存関係が存在します。 そんな依存関係を管理してくれているので、composer require 1と打つだけでライブラリ1に必要な別ライブラリも全てダウンロードしてくれるというまるでライブラリの作曲家のような仕事をしてくれるのです。 Eloquent ORMとMigrationでwebアプリに必須なDBを管理! LaravelではDB上のデータ操作を簡単に行うためのEloquent ORMという仕組みが備わっています。 Eloquent ORMはデータベースとモデルに関係性(リレーション)を持たせて、データを柔軟に扱えるようにしたものです。データベースの操作のためのSQLをかなり書きやすくした記述法です。 例えば、SQLではselect * from user where id = 1;という記述方法ですが、 Laravelでは,$data = User::where('id',1)->get();という書き方になります。 SQLのような長ったらしい文章が短くなり、一致した条件の先頭の値だけを取得することや副問合せなどもわかりやすく書くことができる優れものなのです。 また、migrationというテーブル定義の仕組みがあり、DBの改変記録を保持しており、SQLを書かなくても、laravel上でテーブルのカラム名や値を作成することができます。共同開発の場合などでも同じテーブルをデフォルトで入れ込むことができる点もメリットです。 最後に Laravelは今や世界でもかなりの人気を誇るフレームワークとなっているので独学にも、これから企業に導入しよう!と思っている方はすごくいい判断だと思います。 環境構築をやって、いますぐアプリを作りたくなったことでしょう。これからも良きLaravelライフを!!
- 投稿日:2021-10-13T13:41:44+09:00
【電話番号抽出】英数全角記号特殊文字が入り混じった文字列から数字だけを抽出する。ついでに全角数字は半角数字に変換する。
あらすじ 先日、とある機能実装のため、Amazonから出品者情報を取得する必要があった。 しかし、実際に取得した電話番号のデータを見てみたところ・・・ ※個人情報保護の為電話番号は0でマスキングしてあります。 000−0000−000 +8190-0000-z0000 03 0000 0000 です。 0000−00−0000 電話番号はこちら → 000 0000 0000 00−0000−0000 〇〇宛 000−0000−000 きっっっっっっっったな! こんなんじゃ使い物にならん・・・・ どうやらAmazonでは出品者の情報(本人によるCSV入力だと思われる)はちゃんとしたバリデートが行われていないっぽい。 それで良くシステム側に不具合無いな・・・ 要件 ・とりあえず数字だけを取得する。 ・全角数字は半角数字に変換して、電話番号の一部と数える。 実際のコード Paizaに実際に動かしたコードがあるので、コード見るのだるい人は確認してみてください。 https://paiza.io/projects/TwekAfnexAUCixptI7Sn3g //文字変換を行うメソッド function mbTrim($pString) { $pString = preg_replace('/[\D*$]/u', '', $pString); //数字だけ(半角全角問わず)抽出 $pString = mb_convert_kana($pString, "n"); //全角の値を半角に変換 $pString = preg_replace('/^81/u', 0, $pString); //国際電話番号表記(+81)は先頭を「0」に修正 return $pString; } //テストデータ格納してるだけのメソッド function getData(){ $data = "000−0000−000 +8190-0000-z0000 03 0000 0000 です。 0000−00−0000 電話番号はこちら → 000 0000 0000 00−0000−0000 〇〇宛 000−0000−000"; $data_array = explode("\n", $data); return $data_array; } $telNums = getData(); foreach($telNums as $telNum){ $telNum = mbTrim($telNum); $convertedTelNums[] = $telNum; } var_dump($convertedTelNums); /* 結果 array(7) { [0]=> string(10) "0000000000" [1]=> string(11) "09000000000" [2]=> string(10) "0300000000" [3]=> string(10) "0000000000" [4]=> string(11) "00000000000" [5]=> string(10) "0000000000" [6]=> string(10) "0000000000" } */
- 投稿日:2021-10-13T13:41:44+09:00
英数全角記号特殊文字が入り混じった文字列から数字だけを抽出する。ついでに全角数字は半角数字に変換する。
あらすじ 先日、とある機能実装のため、Amazonから顧客情報を取得する必要があった。 しかし、実際に取得した電話番号のデータを見てみたところ・・・ ※個人情報保護の為電話番号は0でマスキングしてあります。 000−0000−000 +8190-0000-z0000 03 0000 0000 です。 0000−00−0000 電話番号はこちら → 000 0000 0000 00−0000−0000 〇〇宛 000−0000−000 きっっっっっっっったねぇなおい! てか「です」とか「電話番号はこちら」って、もはや電話番号として入力していい値じゃねぇだろ! こんなんじゃ使い物にならん・・・・ 要件 ・とりあえず数字だけを取得する。 ・全角数字は半角数字に変換して、電話番号の一部と数える。 実際のコード Paizaに実際に動かしたコードがあるので、コード見るのだるい人は確認してみてください。 https://paiza.io/projects/TwekAfnexAUCixptI7Sn3g //文字変換を行うメソッド function mbTrim($pString) { $pString = preg_replace('/[\D*$]/u', '', $pString); //数字だけ(半角全角問わず)抽出 $pString = mb_convert_kana($pString, "n"); //全角の値を半角に変換 $pString = preg_replace('/^81/u', 0, $pString); //国際電話番号表記(+81)は先頭を「0」に修正 return $pString; } //テストデータ格納してるだけのメソッド function getData(){ $data = "000−0000−000 +8190-0000-z0000 03 0000 0000 です。 0000−00−0000 電話番号はこちら → 000 0000 0000 00−0000−0000 〇〇宛 000−0000−000"; $data_array = explode("\n", $data); return $data_array; } $telNums = getData(); foreach($telNums as $telNum){ $telNum = mbTrim($telNum); $covertedTelNums[] = $telNum; } var_dump($covertedTelNums); /* 結果 array(7) { [0]=> string(10) "0000000000" [1]=> string(11) "09000000000" [2]=> string(10) "0300000000" [3]=> string(10) "0000000000" [4]=> string(11) "00000000000" [5]=> string(10) "0000000000" [6]=> string(10) "0000000000" } */
- 投稿日:2021-10-13T11:32:05+09:00
phpでWordpressの動画をランダム再生する方法
基本環境 wordpressでカスタムページを作成 ランダム表示php 動画再生htmlタグ ランダム表示と動画再生組み合わせ 動画アップロード カスタムページをカスタマイズ 表示確認 参考記事 基本環境 WordPressで子テーマ設定済み wordpressでカスタムページを作成 親テーマのpage.phpをコピペしてカスタムページvideo-random.phpを作成 # cp -p /var/www/html/example.com/wp-content/themes/親テーマ/page.php /var/www/html/example.com/wp-content/themes/子テーマ/video-random.php video-random.php最上部に以下を追記 # vim /var/www/html/example.com/wp-content/themes/子テーマ/video-random.php <?php /* Template Name: video-randomページ */ ?> WordPressで新規固定ページを作成、テンプレートで「video-randomページ」を選択 ランダム表示php <?php $random = array( "<HTML_option1>", "<HTML_option1>", "<HTML_option1>", ); $random = $random[mt_rand(0, count($random)-1)]; echo $random; ?> 画像表示の場合、HTMLタグをまとめるとシンプルなコードに <?php $random = array( "<画像URL_1.jpg>", "<画像URL_2.jpg>", "<画像URL_3.jpg>", ); $random = $random[mt_rand(0, count($random)-1)]; echo '<img src="'.$random.'" alt="">'; ?> 動画再生htmlタグ <video src="動画URL_1.mp4"></video> 属性 自動再生 <video src="動画URL_1.mp4" autoplay ></video> 無音声再生 <video src="動画URL_1.mp4" muted ></video> 繰り返し再生 <video src="動画URL_1.mp4" loop ></video> その他の属性 https://webliker.info/52510/#toc_2 ランダム表示と動画再生組み合わせ <?php $random = array( "<動画URL_1.mp4>", "<動画URL_2.mp4>", "<動画URL_3.mp4>", ); $random = $random[mt_rand(0, count($random)-1)]; echo '<video src="'.$random.'" autoplay muted loop >'; ?> 動画アップロード WordPressメディアに動画をアップロード カスタムページをカスタマイズ video-random.php<main> </main>間をカスタマイズ 自動再生、無音声再生、繰り返し再生を設定 # vim /var/www/html/example.com/wp-content/themes/子テーマ/video-random.php <main> <?php $random = array( "<動画URL_1.mp4>", "<動画URL_2.mp4>", "<動画URL_3.mp4>", ); $random = $random[mt_rand(0, count($random)-1)]; echo '<video src="'.$random.'" autoplay muted loop >'; ?> </main> 表示確認 WordPress固定ページで表示確認 参考記事 https://webnetamemo.com/coding/php/201608313448 https://webliker.info/52510/#toc_2
- 投稿日:2021-10-13T00:37:32+09:00
WSL2のUbuntuでPHPStanを使う(VSCode)
はじめに 自分だけの環境に PHPStan を入れて、他の開発メンバーと差をつけたい時、あると思います ということで、WSL2 で利用する Ubuntu ディストリビューションに PHPStan を設定し、そちらを VSCode で読み込むようにします バージョン Windows11 Pro 21H2 VSCode 1.61.0 Ubuntu 20.04.2 LTS Composer 2.1.3 前提 こちらの記事の続きです 拡張機能インストール手順 1.PHPStan インストール 以下のコマンドを実行する # パッケージ最新化 sudo apt update # PHPStan インストール composer global require phpstan/phpstan 2.VSCode と連携 VSCode の拡張機能PHPStanをインストールする 3.PHPStan 読み込み設定 VSCode の settings.json を編集する settings.json { "phpstan.path": "/home/xxxx/.config/composer/vendor/bin/phpstan", } 4.phpstan.neonファイル作成 PHPStan で分析させたいリポジトリに以下のファイル配置 一番厳しいレベルに設定(0 ~ 7 [= max]が設定できる) srcディレクトリ配下を分析する設定 phpstan.neon parameters: level: max paths: - src 保存することで VSCode に反映され、対象ファイルの分析が行われる NG 個所はサイドバーのエクスプローラーのファイル名が赤くなり、対象コードに赤い波線が出ます おわりに 小さいリポジトリでも、それなりに赤い波線が出てしまいました (ほとんどが array のドックコメント & null になる可能性のある変数の不適切な引数設定についてでした) かなり不具合を予防できるような気がします、特にログに出る Notice エラーを CakePHP の例ですが、今回の対応で修正したコミットになります GitHub | PHPStan設定追加:コード最適化 メンバー間でコード形式を統一するために、PHPStan を追加すべき個所はリポジトリの composer.json ですが、 いろいろな事情で追加できない(したくない)時に、参考にしていただければと思います この記事が他のエンジニアの助けになれば幸いです