- 1. PDOってよくわからず使ってない?
- 2. PHP オブジェクト指向覚書き「超基礎」
- 3. 【覚書き】PHPStanのレベル0では、関数に渡す引数の不足は確認するが超過は確認できない
- 4. サーバーをまたいでPHPからnode.jsを動かすサンプルコード
- 5. Laravelで “A facade root has not been set.” というエラーが出た場合の対処法
- 6. PHPで日本語の文字数を正しくカウントする方法
- 7. 「同じ意味なのに別の名前のカラム」を統一して使う
- 8. SQLではなく、PHPでページネーションを実装する。
- 9. コミュニケーション型Web地図(Limit12、地図の伝言板)
- 10. アクセス修飾子の使い分け
- 11. date(‘Ym’, strtotime(‘2024-08’))とdate(‘Ym’, strtotime(‘202408’))の罠
- 12. VScodeプラグイン 各言語おすすめ
- 13. Laravel PHPコマンドを使いこなす
- 14. 未経験から独学でポートフォリオの完成まで【Laravel / MySQL】
- 15. PHPUnit 10 以降で withConsecutive を使いたい場合の 2 つの方法
- 16. 【Laravel】NGワードを精度高く検知する機能を開発してみる
- 17. 環境構築メモ – Laravel編
- 18. 【デレステ】レアアイドルは本当に均等に出現するのか15901人調べてみた
- 19. 新人PGのLaravel備忘録~論理削除の実装~
- 20. 環境構築メモ – PHP・MySQL編
PDOってよくわからず使ってない?
## はじめに
PDOについて理解せず使っていたので今回PDO学びました。
使い方というよりPDOって何なのかを記事にしております。基本ブラックボックスで使って問題ないものなので初学者は飛ばしてもいいと思います
自分も初学者でインプット目的で書いてるのであしからず。
ただ(細かくを書くことはできないが)参考にしていただけたら幸いです。## そもそもPDOって何?
PDOは、PHP Data Objects の略で、
`「PHPでDBに接続するためのオブジェクト指向プログラム」`※自分の解釈なので間違っているや、こういう解釈の方がいいなどあればご教授くださいまし。
脆弱性や柔軟性、拡張性がよいのでよく使われる。
脆弱性・・・SQLインジェクションをプリペアドステートメントを使うことで防ぐことができる。
柔軟性・・・DBが変わっても一部変更すればDBの切り替えに対応できる。
拡張性・・・エラーハンドリングなどのオプションを追加変更が容易## PDOは、PHPのライブラリ
PDOはPHPのライブラリとして提供されているので
PHPのドキュメントに書かれている。
[PD
PHP オブジェクト指向覚書き「超基礎」
## はじめに
プロパティやメソッドなどの超基本についてだけまとめました。
全部頑張って書こうと思いましたが
カプセル化、継承、staticなど先が見えず心が折れ、
とりあえず書いたところまでの投稿です。
初学者はまずここまで理解しようということで。## オブジェクト指向とは
オブジェクト指向は
クラス(class)という設計書の中に
プロパティやメソッドなど(部品)をひとまとめにして
この設計書を元に作ったもののことをインスタンスという。
プロパティは変数、
メソッドは関数と認識して今のところは問題ない。
※自分が最初理解するのにわかりづらかったことは
何をオブジェクトと呼ぶのか?
この記事最後に話そうと思う。## 基本的な使い方(プロパティ、メソッド)
“`diff_php
【覚書き】PHPStanのレベル0では、関数に渡す引数の不足は確認するが超過は確認できない
# 初めに
PHPStanを使っている際、関数やメソッドに渡す引数が超過している場合にエラーを出してくれないという事象に当たりました。
備忘のためアウトプットします。# PHPStanのレベル0
まず、レベル0の説明はこちら。> basic checks, unknown classes, unknown functions, unknown methods called on `$this`, wrong number of arguments passed to those methods and functions, always undefined variables
> 基本的なチェック、不明なクラス、不明な関数、不明なメソッドの呼び出し$this、それらのメソッドと関数に渡される引数の数が間違っている、常に未定義の変数
`メソッドに渡せれる引数の数が間違っている`とあるので、引数の数が多い場合でもエラーを出してくれるのかと思っていました。
# レベル0では引数の超過を確認できない
検証のために以下のコードを作成し、解析にかけてみました。“`php
cl
サーバーをまたいでPHPからnode.jsを動かすサンプルコード
## 備忘録メモとして
レンタルサーバーに設置したフロントエンドから、別サーバー(VSP)に置いてあるNode.jsを動かしてデータを返すサンプルコードテスト環境:XAMPP
### ファイル構成
“`
サーバー1(レンタルサーバー)
C:\xampp\htdocs\test1
call_run_node.php
index.phpサーバー2(VPSサーバー)
C:\xampp\htdocs\test2
run_node.php
script.js
“`
サンプルでは特に外部モジュールを使用していませんが、必要なモジュールがあればサーバー2側にインストールします。## サーバー1
index.php:フロントエンド表示部分と実行ボタン
“`php
サーバー2のNod
Laravelで “A facade root has not been set.” というエラーが出た場合の対処法
## 概要
– Testを作成中に遭遇したことのないエラーが発生し、手間取ったため備忘録として記載する## 原因
“`php
@dataProvider
“`
こちらを利用する方法を誤っていた## 一通りの対策
https://qiita.com/aminevsky/items/784573234d071c769288
:::note info
少し古い記事ですが、`@dataProvider` を利用していない場合は一度こちらを試したのちに試す方が良いかもしれません
:::## 対策
“`php
/**
* @test
* @dataProvider provideValidConditions
*/
public function testValidConditions($condition, $expectedResult)
{
// 省略
}public static function provideValidConditions()
{
return [
// 省略
];
PHPで日本語の文字数を正しくカウントする方法
## 概要
– バリデーションのテストをおこなったところ、日本語に対する正しい判定を行えていないことが分かった
– 正しい判定方法を備忘録として残しておく## 理由
“`php
if (strlen($name) > 50) {
“`
もともとこのようにバリデーションを行っていたが、「あ」を50回繰り返したところエラーが発生してしまった>function strlen(string $string): int
文字列の長さを得る
>
>与えられた string の長さを返します。
>
>https://www.php.net/manual/function.strlen.php
>
>@param $string: 長さを調べる文字列。
>
>@return string の長さをバイト単位で返します。原因は単純で、バイト単位でカウントするため2倍カウントされてしまっていることが原因であった
## 解決方法
>function mb_strlen(
string $string,
string|null $encoding = null
): i
「同じ意味なのに別の名前のカラム」を統一して使う
## はじめに
タイトルのようなことはそんなにないと思う。
なぜならテーブルのカラム名を変えた方が正しい判断だから。例えば
`講座履歴テーブルのcourse_table_id`
`講座情報テーブルのcourse_id`
この二つは同じ意味で使われる為、統一するべき。
けどカラムを変えられないケースもあるので今回この話題で記事を投稿する。## キーを作成する
“`diff_php
// テーブルのデータを取得する
$table_array1 = SELECT * FROM …..;
$table_array2 = SELECT * FROM …..;// $table_array2のキーを作成する
foreach ($table_array2 as $loop_value) {
$loop_value->course_id = $loop_value->course_table_id;
}
“`上記のコードのように
①foreach文で中身を展開
②左側に新しく追加したいキーを。右側に新しく追加するキーの値を書けばOK
※今回変更ではなく、新たにキーを追
SQLではなく、PHPでページネーションを実装する。
ページネーションを実装する際は
通常はSQLで取得する際にOFFSETとLIMITで取得するデータに制限をかけるが
今回はSQLではなくPHPでページネーションを実装する。
この際にJOINを使って結合もせず、PHPでMERGEを行う。
(独自関数をいじりたくないので無理やり。)
※フロント側も載せる。
### バック側実装
“`diff_php
$table_array1 = “独自関数でDBのデータを取得。”;
$table_array2 = “独自関数でDBのデータを取得。”;
$table_array3 = “独自関数でDBのデータを取得。”;// ひとつにまとめる
$table_list = array_merge($table_array1, $table_array2, $table_array3);// 並び替え(DAYカラムで降順)
$sort_value = array_column($table_list, ‘DAY’);
array_multisort($sort_value, SORT_DESC, $table_list);/
コミュニケーション型Web地図(Limit12、地図の伝言板)
コミュニケーション型のWeb地図を2つ作ってみました。
1つは、自由投稿型の「Limit12」(クチコミWeb地図)。
もう一つは、グループ内情報共有型の「地図の伝言板」です。【Limit12】
https://chosashi-data.org/shirado/limit12/【地図の伝言板】
https://office-shirado.com/dengon/
![イメージ_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67836/f2d7870b-a7c0-9b01-7f24-fe3a5622dd98.png)
![イメージ_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67836/c54364a9-9c3a-cf3d-7ca7-2edb51b94eca.png)どちらとも、機能はシンプルで、Web地図上に、ダブルクリック(ダブルタップ)でメモを投稿(プロット)するだけです。
「リミット
アクセス修飾子の使い分け
## アクセス修飾子
アクセス修飾子とはメソッドや変数のアクセスできる範囲を指定するもので、以下が存在します。| アクセス修飾子 | 同一クラス | サブクラス | すべて |
|:-:|:-:|:-:|:-:|
| public | 〇 | 〇 | 〇 |
| protected | 〇 | 〇 | × |
| private | 〇 | × | × |私自身そうだったのですが、プログラムに触れて間もない頃はわざわざprotectedやprivateでアクセス権限を弱める理由が分からずとりあえず全部publicで書きがちだと思います。なので、今一度使い分けを整理していきます。
私が思うにアクセス修飾子の使い分けの観点は以下です。それぞれ説明していきます。
①外部に公開する情報を制限する。
②イミュータブルなオブジェクトを作るため。(今回割愛)
③継承の原則を守るため。### 外部に公開する情報を制限する。
呼び出し側と呼び出される側という関係を意識して、呼び出される側は呼び出し側に必要な情報のみを公開し、不必要な情報は隠蔽する。所謂カプセル化です。
date(‘Ym’, strtotime(‘2024-08’))とdate(‘Ym’, strtotime(‘202408’))の罠
`202408`は**Ym**と評価されるのではなく、**His**として評価されるので実行日の20時24分08秒になります。気をつけてください
“`php
date(‘Ym’, strtotime(‘2024-08’)) !== date(‘Ym’, strtotime(‘202408’))
“`https://www.php.net/manual/ja/datetime.formats.php#:~:text=%27t%27%3F-,HH%20MM%20II,-%22040837%22%2C%20%22T191919%22
VScodeプラグイン 各言語おすすめ
VScodeの拡張機能について各言語ごとにまとめる
## 共通
### Japanese Language Pack
日本語化するための言語化パック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/dab28482-ae62-81f6-c8c9-d89dad705f12.png)### Code Spell Checker
スペルチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/b106fc87-20c2-9cf9-b235-b6c52f836d0e.png)### vscode-icons
アイコン表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/48d74c47-fa84-433c-461b-f448ab0c9157.p
Laravel PHPコマンドを使いこなす
LaravelでのWebアプリケーションの作る際の初期段階として、migrationを使用したDB操作のやり方について随時更新していく
### DBの作成
migrationではDBの作成自体はすることができないため、PHPMyAddmin等でDBをあらかじめ作成しておくDB作成については[こちら](https://qiita.com/aMASSO/items/08e1ee8b2245d0f524e4)
### テーブル作成
“`
php artisan make:model {table名} -m
php artisan migration
“`### ログイン機能の実装
デフォルトのログイン機能を実装
“`
composer require laravel/ui
php artisan ui bootstrap –auth
npm install && npm run dev
“`
未経験から独学でポートフォリオの完成まで【Laravel / MySQL】
# はじめに
2024年1月から独学でプログラミングの学習を始め、
ポートフォリオが完成するまでにやってきたことをまとめたいと思います。## 目次
1. ポートフォリオの紹介
1. 使用技術
1. 基本設計
1. 開発の進め方
1. 学び
1. 苦労したこと
1. 課題
1. 最後に# 1. ポートフォリオの紹介
◾️サービスの概要
農業体験イベントの情報や農業に関する知識をブログを通じて発信するサービスです。農業に興味のある方や新たに始めようとする方々に向けて、情報を提供します。![スクリーンショット 2024-09-09 17.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835741/005d4dd2-1340-a46d-b48f-49337a03b780.png)
◾️開発の背景
父の農業を手伝う中で、何か自分にもできることはないかと考え、このWebアプリケーションを作成しました。農業に挑戦したいがどこから始めればいいのか分からない人や、知識や技術を求めている
PHPUnit 10 以降で withConsecutive を使いたい場合の 2 つの方法
こんにちは。やまゆです。
https://github.com/sebastianbergmann/phpunit/issues/5063
PHPUnit 9 でモック用の `withConsecutive` メソッドが deprecated になり、 10 で削除されました。
このメソッドは、同じメソッドを連続して呼ぶ場合のモック定義として有効でした。
例えば、このような実装コードがあるとします。
“`php
【Laravel】NGワードを精度高く検知する機能を開発してみる
こんにちは!
サーバーサイドエンジニアからフルスタックエンジニアにテラ進化したいすぎちゃんです! :cat:今回はNGワードを**精度高くマスキング**する機能についてお話ししたいと思います!
さて、このNGワードマスキング機能はどのような効果をもたらすでしょうか?
– サービス利用者の心理的安全性の向上
– カスタマーサポート対応の負担軽減
– エンジニアによるデータベースクリーニング作業の削減
([実際に被害にあった人の声](https://qiita.com/nasuB7373/items/10bebd8e9f0b3331f348))などなど・・・
まさに三方良しの機能と行っても過言ではありません。実際に配信サービスやオンラインゲームにも、NGワードに対してなんらかの処理をかける機能が搭載されています!
:::note info
– [**ニコニコ生放送**](https://dic.nicovideo.jp/a/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E7%94%9F%E6%94%BE%E9%80%81%3A%E9%81%8
環境構築メモ – Laravel編
環境構築としてLaravelのセットアップについて記録しておく
今回はUbuntu上にLaravelをインストールする[Ubuntuのインストールはこちら](https://qiita.com/aMASSO/items/c436339ad183a9dbb545)
[PHP・MySQLのインストールはこちら](https://qiita.com/aMASSO/items/08e1ee8b2245d0f524e4)### 1.nodeのインストール
※sudo apt でインストールされるnodeは古い為、nvm(ノード バージョン マネージャー)でインストールするnvmインストール
“`
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/6ec66be
【デレステ】レアアイドルは本当に均等に出現するのか15901人調べてみた
アイドルマスター シンデレラガールズ スターライトステージ9周年おめでとうございます。
https://x.com/imascg_stage/status/1830621726352572503
ところで日課の納税をするたびに気になっていたことがあるんですよね。
レアアイドルって本当にみんな均等に出現するんだろうか?![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/fa1f6c63-ff23-d04f-5316-537e6df0ece1.jpeg)
デレステはガシャの出現率が全て表示されていまして、レアアイドルは全員0.825%で共通となっています。
ただ毎日引いていると、なんとなくそうではない気がしてくるんですよね。
西園寺琴歌やクラリスはわりとよく見かけるし、逆に楊菲菲や兵藤レナなどはあんまり見ない気がします。
これは単に記憶が偏っているだけなのでしょうか。
それとも本当に何らかの偏りが発生していたりするのでしょうかね。調べてみたいですよね。
しかし調査するにしても
新人PGのLaravel備忘録~論理削除の実装~
# はじめに
こちらは筆者がLaravelに関する知識の定着を図るための投稿です。
以下の点にご注意ください
* この記事の読者は私と同じ実務歴半年~1年程度の新人PGの方を想定しています
* 記事内において間違いや冗長な説明が多々あることをご容赦ください
* 公式ドキュメントと相違がある場合はそちらを参考にしてください
* 公の場で記事を引用していただく場合は予めご連絡ください
* コメント大歓迎です!!出来るだけ返信しようと思っております!!
# 今回のテーマ
この記事ではLaravelにおける論理削除の実装について具体的なコードを用いて説明します。[^1]:::note warn
今回の実装はlaravel8での実装となります。他のバージョン(特に5.x以前)で実装する際はコードが異なる可能性があるため[公式ドキュメント](https://laravel.com/docs/8.x/eloquent)の#Soft Deletingの項をご確認ください。
:::
[^1]:今回の記事はあくまでも「論理削除の実装」に関する記事であり、導入を推奨するものではありません。
# 論理削除
環境構築メモ – PHP・MySQL編
環境構築としてPHP・MySQLのセットアップについて記録しておく
今回はUbuntu上にPHP・MySQLをインストールする[Ubuntuのインストールについてはこちら](https://qiita.com/aMASSO/items/c436339ad183a9dbb545)
### 1.PHPインストール
phpのバージョンを確認
“`
sudo apt show php
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/b17f0361-bc6b-ad0f-b8ea-91c15700be5c.png)
リポジトリを追加
“`
sudo apt install software-properties-common
sudo apt-add-repository ppa:ondrej/php
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/