- 1. Laravel MVCの仕組みとWEB3層構造
- 2. テキストエディタの違い(シンタックスハイライト)
- 3. 【php】文字列操作基礎
- 4. XAMPPでPHPのバージョンを複数持つ
- 5. 【PHPUnit】テストデータ作成時はFakerを積極的に使おう
- 6. 【socialite】Googleログインのモックを使ったテスト
- 7. 【Laravel】assertDatabaseHasで複数データを一気にテストしたい
- 8. Laravel8 jQuery 画像動的表示
- 9. CentOS Stream8にNginx、PHPをインストールする
- 10. クラスとインスタンス PHP
- 11. 【実験】a.phpでc.phpをrequireするだけでb.phpはc.phpをrequireなしで使えるの?
- 12. PHP_クラスについて
- 13. 【メモ】PHPのuse関連について学ぶ
- 14. PHPのコード整形と静的解析をpre-commitでコミット時に自動で実行したい
- 15. 【Laravel】都道府県プルダウン&キーワード検索機能【クエリビルダ/ローカルスコープ/ページネーション】
- 16. Git ローカルのブランチをリモートリポジトリへpush(n回目(n>=2))
- 17. 【Laravel】HerokuでAWS S3画像アップロード
- 18. 【PHP】TBを作成 ※n列で改行して余りはハイフン
- 19. 【カンタン】PHPで改行を反映させる
- 20. 実務4年目のWEBエンジニアが「PHP本格入門(上)」を読んで学んだこと 10選
Laravel MVCの仕組みとWEB3層構造
## MVCとは
* アプリケーションを実装するためのデザインパターン
* アプリケーションの役割を分ける### Model(データ処理)
データベースへのアクセス(登録・更新・削除・検索の実行)やデータの加工等々、
データにまつわる処理全般を請け負う。### View(ブラウザに表示される画面を作る)
Controllerから取得したデータをテンプレートを使ってブラウザに出力する。### Controller
画面からの入力値をModel層の処理機能へデータとして引き渡したり、
データベースから取得したデータを画面へ表示するためにView層へ渡したりと
ViewとModelの間を取り持つ。## WEB3層構造
* ブラウザ(クライアント)
* プレゼンテーション層(WEBサーバ)
* アプリケーション層(APサーバ)
* データベース層(DBサーバ)クライアントからの処理をするサーバがプレゼンテーション層・アプリケーション層・データベース層の3層から構成されているため、WEB3層構造という。
#### クライアント
利用者からの入力を受け付け、結果を出力する。
テキストエディタの違い(シンタックスハイライト)
テキストエディタでコーディングしていて、気になったことがあります。
# シンタックスハイライト
コードを書くときにどこまでシンタックスハイライトがつくかエディタによって違いがあるようです。
例1
“`php_sample1.php
【php】文字列操作基礎
### 複数行の入力
ヒアドキュメントと呼ばれる方法。EOMの目印が出てくるまで文字列を出力する
“`PHP
echo <<< EOM one two three EOM; ``` ### 小文字から大文字に変換 ```PHP echo strtoupper('hello world!'); ``` ```PHP HELLO WORLD! ``` ### 文字列の一部を取得 substr(string, 取り出し開始位置, length); ```PHP echo substr('abcde', 0, 2); ``` ```PHP ab ``` ### 配列の中の最大値・最小値を取り出す ```PHP $array = array(1, 2, 3, 4); echo max($array); echo min($array); ``` ```PHP 4 1 ``` ### 文字列の中の特定の要素の個数をカウント ```PHP echo substr_count("aAaAaA", "A"); ``` ```PHP 3 ``` ### 文字列の文字数をカウント
XAMPPでPHPのバージョンを複数持つ
XAMPPでPHPのバージョンを複数持つ方法を調べて試行錯誤した結果うまくいったので備忘録として残しておく。
# 準備
[XAMPPのサイト](https://www.apachefriends.org/jp/index.html)からポータブル版(exeではなくzipがいい)の欲しいPHPのバージョンが入っているデータを持ってくる。
今回は7.1と8.1で進めていく。# 実践
1. 持ってきたデータをどっちかひとつ解凍する。どっちでもいいがここでは便宜上7.1を解凍する。解凍したのはxamppを運用したい場所(C直下とか)に置く。ここでは便宜上Cドライブの直下に置く。2. 移動したxamppフォルダの中に「PHP」「Apache」「phpMyAdmin」というフォルダがあるので、それをそれぞれ「PHP71」「Apache71」「phpMyAdmin71」という名前にリネームする
3. 次に8.1を解凍する。その中にもやっぱり「PHP」「Apache」「phpMyAdmin」というフォルダがあるのでそれらをそれぞれ「PHP81」「Apache81」「phpMyAdmin81」
【PHPUnit】テストデータ作成時はFakerを積極的に使おう
## 環境
Laravel v9.5.1 (PHP v8.1.3)## テストデータを作成するとき
テストケースではパラメーターに入れる値などを直接入れないほうがいいらしい。
値を固定してしまうと本当の意味で正確なテストではなくなってしまう。## Bad
“`php
$this->users = User::factory(2)->create();
$params = [
‘user_id’ => $this->users[0]->id,
‘message’ => ‘メッセージです’,
‘points’ => 10,
];
“`
## Good
Fakerなどを使うとテストが実行されるごとにランダムな値でテストしてくれる。“`php
$this->users = User::factory(2)->create();
$params = [
‘user_id’ => $this->users[0]->id,
‘message’ => Str::random(10),
‘points’ => F
【socialite】Googleログインのモックを使ったテスト
## 環境
Laravel v9.5.1 (PHP v8.1.3)## socialiteを使ったモック
“`socialite“`でGoogleログインを実装したときのテストでモックを使用。
“`php
class OAuthTest extends TestCase
{
use RefreshDatabase;private function createSocialiteMock()
{
$user->shouldReceive(‘getEmail’)
->andReturn(Faker\Factory::create()->unique()->safeEmail)
->shouldReceive(‘getName’)
->andReturn(Faker\Factory::create()->name);$provider = Mockery::mock(‘Laravel\Socialite\Contracts\Provider’);
$provider->shoul
【Laravel】assertDatabaseHasで複数データを一気にテストしたい
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 状況
DBテストを書いていたら下記のエラー。
エラー文だけでググっても解決せず、少し苦労したので備忘録とする。“`
str_ends_with(): Argument #1 ($haystack) must be of type string, array given
“`
複数のデータが入っているかを一気にテストしたかったため、
配列の配列を第2引数としていた。
直感的にこう書けるかなと思ったがだめっぽい。“`php
$users = User::factory(2)->create();$this->assertDatabaseHas(‘post_histories’, [
‘user_id’ => $users[0]->id,
‘hoge_type’ => ‘hoge’,
], [
‘user_id’ => $users[1]->id,
‘hoge_type’ => ‘hoge’,
]);
“`
## 解決法DBテストではレコードごとにデータが入っているかを
Laravel8 jQuery 画像動的表示
## 初めに
この記事では、画像選択時にその場で選択した画像を表示させる方法をご紹介します![![Image from Gyazo](https://i.gyazo.com/58c381c1bc1418ab895dd66ad810b352.gif)](https://gyazo.com/58c381c1bc1418ab895dd66ad810b352)
## 実装
今回は以下のように実装してみました。
CSSはTailwindCSSを使用してます。・add.blade.php(画像選択のビュー)
“`php