- 1. 【PHP】$_POSRで送信するためのチートシート
- 2. 【PHP】requier_oneceのパスについて
- 3. 配列などなど
- 4. エンジニアインターン5日目
- 5. 【Laravel】同値チェックのバリデーション
- 6. PHPを基本からまとめてみた【環境構築】
- 7. 負荷テストする時大量データ作成プロシージャ
- 8. Laravel9でつまずいたところ
- 9. [WIP] PHP でデータベースに接続する PDO
- 10. 【doctrine】Specを使用してデフォルトで条件の入ったdoctrineのオブジェクトを出力したい
- 11. WSL2でのLaravel開発の流れ(自分用メモ)
- 12. 【初心者向け】PHP の コンストラクタ について
- 13. コンストラクタとは?
- 14. 値の真偽の判定とfilter_var関数
- 15. PHPUnitのカバレッジバッジを作成する
- 16. $app->loadEnvironmentFrom(‘.env.example’);
- 17. エンジニアインターン4日目
- 18. 【PHPUnit】assertSameとassertEqualsを正しく使い分ける
- 19. プロキシ環境下でAWS SDK for PHPを利用してファイルのアップロード・ダウンロードを行いたい
- 20. PHPの配列に関して簡単にまとめる
- 21. AWS SDK for PHPでS3からgzipファイルをそのまま(展開されることなく)取得したい
【PHP】$_POSRで送信するためのチートシート
# $_POSTで送信するためには
## 発端
* $_POSTでデータが欲しいがやり方が曖昧だったためまとめる。
【結論】formに“`method=”POST”“`、“`buttonのtype=”submit”“`にしてれば飛ぶ。## 方法
### form内で色々な情報を集めてまとめて送信する場合
“`php:index.php
【PHP】requier_oneceのパスについて
# requier_oneceのパスについて
## 発端
* ファイルパスは合っているはずなのに読み込めなくて何度もハマったのでまとめる。## 原因
PHPは、「実行したファイルのあるディレクトリが常に実行時のカレントディレクトリになる」という規則があるためエラーとなってしまっていたっぽい。## 解決策
### “`__DIR__“`もしくは“`dirname(__FILE__)“`を使おう
1. “`__DIR__“`は記入したファイルが所属するディレクトリまでのパスを返してくれる。
“`
test–
|-layout
| |_layout.tpl
|
|-module
| |_module.php
|
|-template_c
“`
“`php:module.php
// layout.tplを読み込みたい場合
// __DIR__には ~/test/moduleまでのパスが入っている
requir_onece(__DIR__.”/../layout/layout.tpl”);
“`
配列などなど
今日学んだことのまとめ
■配列
$data[0] = ‘a’;
$data[1] = ‘b’;
$data[2] = ‘c’;
$data[] = ‘d’;echo $data[3];
d
インデックス番号が省略された場合はその時点での最大インデックス+1が割り振られる■シングルクォートとダブルクォートの違い
シングルクォート:変数を”で囲うとそのまま出力される
ダブルクォート:中に変数を書いた場合、変数が文字列に書き換えられる。変数展開もしくは変数のパースというらしい。。。
↓例$title = ‘ラーメン’;
$data1 = ‘今日の昼飯は{$title}だった’;
$data2 = “今日の昼飯は{$title}だった”;echo $data1;
echo “
“;
echo $data2;今日の昼飯は{$title}だった
今日の昼飯はラーメンだったあと今日仕事中のミス
・HTMLの中にPHPは書けるけど、PHPの中に
エンジニアインターン5日目
今日は残りのlpのテンプレートを完成させ、サイトに適用させることを目標として取り組んだ。徐々に完成に近づいてきた時sqlで日付指定をして、常に最新の情報を更新するような仕組みを追加する案が出た。gitで新しいissueを作り、ブランチを切り替え、コーディングした。(git branch -b 指定するブランチ)を入力することで、新しくブランチを作ると同時に新しく作ったブランチに切り替えてくれる。自分は最新3ヶ月の情報を得たかったため、betweenを使い、現在から3ヶ月前から現在までの値を得て、1番最新の情報を表示するようにした。コーディングが終わったらgitにpull&requestして先輩エンジニアにレビューしてもらい、細かな部分を修正してやっと日付指定の作業が終わった。テスト環境のwordpressに適用させて行く途中にまた新たに修正しなければならないところが出てきた。フィールドの値が文字列が少し違っていて、データベースに引っかからないということだった。フィールドから引っ張ってきた値をreplaceして文字列を変えてデータベースに渡せば解決できた。この作業も日付指定の時と同じ流れ
【Laravel】同値チェックのバリデーション
# はじめに
確認用の入力でバリデーションがしたく、同値チェックができるもののまとめ# same:フィールド名
指定したフィールドと同じ値であるかどうか
“`PHP
‘name’ => [‘same:confirm’]
“`# different:フィールド名
指定したフィールドと異なる値であるかどうか
“`PHP
‘sub_email’ => [‘different:main_email’]
“`# confirmed
[フィールド名]_confirmationフィールドと同値であるかどうか“`PHP
‘email’ => [‘required’, ‘confirmed’]
“`
入力確認用に使用するものであるが、[フィールド名]_confirmationの存在が必要となる
上記だとemail_confirmationが必要
“`
メールアドレス
メールアドレス(確認用)
“`以上
PHPを基本からまとめてみた【環境構築】
## PHPとは
サーバーサイドのプログラミング言語
## WordPress
ブログを作成するシステム
## MAMPとは
PC上にローカル環境サーバ環境一式をインストールできるツール## 環境構築
ローカル環境構築 ⇨ PCの中にサーバー
公式サイト:[MAMP](https://www.mamp.info/en/downloads/)
“`
//terminalcd /Applications/MAMP/htdocs/
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -V//プロジェクト作成
composer create-project laravel/laravel <プロジェクト名>
“`“`
brew tap shivammathur/php
brew install shivammathur/php/php@7.4
brew link php@7.4
“`## 参
負荷テストする時大量データ作成プロシージャ
DROP PROCEDURE `proc_test01`
/
CREATE DEFINER=`homestead`@`%` PROCEDURE `proc_test01`(IN input int(1))
BEGIN
SET @start_idx = 0;
SET @customers_info_id = 100000;
SET @point_card = 7130010000 ;
loop1: LOOP
SET @start_idx = @start_idx + 1;
SET @customers_info_id = @customers_info_id + 1;
SET @point_card = @point_card + 1;
IF @start_idx > input THEN LEAVE loop1;
END IF;# カード会員情報の登録
insert into DB.table1(card_info_id,customers_info_id,asp_card_main_id,asp_card_
Laravel9でつまずいたところ
## Laravelスタートの見習いエンジニア
自分が学習していく中でつまずいたところをメモします。まずはMVCの動き方とかを知るために職場の方から教えていただいたこちらのサイトをもとにTODOアプリを作成することにしました。
https://www.hypertextcandy.com/laravel-tutorial-introduction### 環境
Laravel9+Docker+mysql+nginx
PHP 8.1.14
editor: PHPStorm### 今日つまずいたところ
Routingはあっているはずなのに
“`
target class [クラス名] does not exist.
“`
のエラーが表示される・・・### 解決
どうやらLaravel8とLaravel9では動作が違うという
(そりゃそうだよな・・・)### 参考記事
https://biz.addisteria.com/laravel_route_error/
とても助かりました。
先駆者の方でこうしてまとめてくださるのは本当にうれしいこと
ありがとうございます。
[WIP] PHP でデータベースに接続する PDO
:::note note
初学者の独り言メモです
PDO について DB への接続・切断、SQL を発行する部分を分けたり、例外処理、プレペアードステートメント、DAO などぼんやり理解したものの本や記事によって異なる関数が使われているのを多く見かけました。プレースホルダの書き方の違いや関数の記述の違い、関数をどう使い分けるのかを知ろうというのが目的です。書き起こしながら理解を深めようと随時加筆・修正していきます。ここで使用するデータベースは MySQL です。 JDBC ドライバ接続についても理解しないと。
:::データベースに接続するための抽象化レイヤーが PHP に用意されています。「PHP Data Objects(PDO)」が用意されています。今回「**PDO クラス**」を使います。
参考:[PDO:PHP – Manual](https://www.php.net/manual/ja/book.pdo.php):::note warn
抽象レイヤーとは何かは後回し
:::**PDO クラス** のインスタンスを生成してデータベースに接続しますが、データベース接
【doctrine】Specを使用してデフォルトで条件の入ったdoctrineのオブジェクトを出力したい
## 環境
php7
Symfony3## そもそもSpecとはなんぞや
[Doctrine-Specification/0-usage.md at 2.x · Happyr/Doctrine-Specification](https://github.com/Happyr/Doctrine-Specification/blob/2.x/docs/0-usage.md)doctrineのクエリよりも簡素に書けるよ―というライブラリらしい。
~~全然慣れない~~## 首題について
“`php
$spec = Spec::andX(
Spec::isNotNull(‘hoge’),
);
“`これだけで済んだ、、、
まあ慣れなんですかね、、、
ジョインして間もないので解決しても腑に落ちないところはある。
WSL2でのLaravel開発の流れ(自分用メモ)
自分用の備忘録としてLaravel導入の流れをまとめます。
## 目次
* 環境
* WSLの準備
* Docker Desktopのインストール
* Laravelのプロジェクト作成## 環境
* Ubuntu 20.04
* WSL2
* PHP 7.4.3
* Laravel9## WSLの準備
1. Powershellを管理者権限で実行する。
2. 下記のコマンドを実行する。
“`shell
wsl –install
“`
3. PCを再起動する。
4. 再起動すると ubuntu のターミナルが自動的に立ち上がるのでユーザ名とパスワードを設定する。## Docker Desktopのインストール
1. 下記のURLにアクセスし、ダウンロード -> インストールする。
https://www.docker.com/products/docker-desktop/
2. 完了したら画面の指示にしたがって windows からログアウト → ログインする(再起動でも OK)。### Dockerの動作確認
1. Docker
【初心者向け】PHP の コンストラクタ について
こんにちは!
システム開発部の松木です。
今回は オブジェクト指向 の一つ、コンストラクタについて深く見ていこうと思います。コンストラクタとは?
コンストラクタは、クラスをインスタンス化(オブジェクト化)した時に、必ず実行されるメソッドです。通常のメソッドはクラスをインスタンス化した後に、アロー演算子を用いて任意のタイミングで呼び出すことができるが、コンストラクタはインスタンス化するタイミングで、自動的に呼び出されるため呼び出す工程がありません。
▼ ブログ記事の詳細は コチラ から ▼
https://beyondjapan.com/blog/2023/01/php-constructor
***
■ 株式会社ビヨンド
・コーポレートサイト:https://beyondjapan.com
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・Twitter:https://twit
値の真偽の判定とfilter_var関数
`$_GET`に格納された値など、PHPには文字列でしか取得できない情報が存在します。
その値を真偽値として扱いたいときには`filter_var`関数が個人的に便利だったので、その他真偽値の判定にまつわる関数とともに出力結果をまとめました。https://www.php.net/manual/ja/function.filter-var.php
例:
“`sample.php
$model = getData($_POST[“id”]);$model->isPublished = filter_var($_POST(“isPublished”), FILTER_VALIDATE_BOOLEAN);
$model->save();
“`## 早見表
| 値 | if($var) | isset($var) | empty($var) | is_null($var) | filter_var($val, FILTER_VALIDATE_BOOLEAN) |
|:-|:-:|:-:|:-:|:-:|:-:|
| true | **true** | **true** |
PHPUnitのカバレッジバッジを作成する
# バッジを表示
https://gist.github.com/hellowork-mhlw/0a5d2e3a3121aefaf01a48b2b53c9ef3
“`markdown
![](https://coverage.deno.dev/hoge.svg)
“`# バッジを更新
最後の数字を変更することで更新できます。`/hoge.svg`などのパスは好きなのいれてください
https://coverage.deno.dev/hoge.svg?97# CI/CDに組み込む場合
“`bash
vendor/bin/phpunit –coverage-html reports
# for Laravel
# php artisan test –coverage-html reportspercentage=$(printf %.0f $(grep -Pom1 ‘(?<=aria-valuenow=").*?(?=")' reports/index.html)) curl https://coverage.deno.dev/hoge.svg?$percent
$app->loadEnvironmentFrom(‘.env.example’);
https://github.com/laravel/framework/blob/0a18e9271c328fd86879a74487c4744cc2a6672d/src/Illuminate/Foundation/Application.php#L542
loadEnvironmentFromでenvをロードしてるわけではない。`.env`を上書きしてるだけ。`.env`とloadEnvironmentFrom()の引数の`.env`が両方ロードされることもない
“`bash
/**
* The environment file to load during bootstrapping.
*
* @var string
*/
protected $environmentFile = ‘.env’;public function loadEnvironmentFrom($file)
{
$this->environmentFile = $file;return $th
エンジニアインターン4日目
今日はlpのテンプレート作成の続きを行った。テスト環境でデータベースから特定の情報を読み込み、その値を表示するという作業だった。そこで、データベースにもwordpressにもない値だった場合、データベースにはないが、wordpressにある場合、両方にある場合この3つの条件を設けてそれぞれに適切な値を入れる作業をした。まず、functionを作り、issetを使って値があるかを調べた。引数が多くなり、他の場所に引用することがめんどうになってしまった。そこで、先輩エンジニアからjsonを使ったら便利と言われた。jsonで配列をつくり、functionの引数にした。jsonを使えば容量も軽いし、別の場所に引用するのも簡単にできるとのことだった。自分はjsonを詳しく知らなかった。先輩エンジニアはweb開発の時はjsonをとても多く使うとのことだった。直接コードも見せていただき利便性を確かめることができた。今日隣で業務委託のエンジニアさんとのミーティングが聞こえてきた。社員のエンジニアさんは業務委託のエンジニアに難しそうなことを要求していた。レベルの高い話で、いずれかは自分もそのような話し合
【PHPUnit】assertSameとassertEqualsを正しく使い分ける
## はじめに
今回の記事はassertSameとassertEqualsの使い分けについてです。何気なくassertSameを使用していて、意図しないエラーに遭遇したので、忘れないよう記事にします## 状況と発生したエラー内容
今回のエラーは下記テストを実行した際に出力されました。ユーザーリポジトリのfindById(ユーザーIDを指定すると対象のユーザーを取得できるメソッド)のテストです。存在するユーザーIDを渡すとユーザーを1件取得できることを確認していますまた、`assertUser`メソッドでは、オブジェクトの属性値が期待するオブジェクトと、実際のオブジェクトで等しいかどうかを評価しています
“`php
public function test_存在するユーザーIDを渡すとユーザーを1件取得できること(): void
{
// given
$expectedUser = $this->user;// when
$actualUser = $this->userRepository->
プロキシ環境下でAWS SDK for PHPを利用してファイルのアップロード・ダウンロードを行いたい
クライアント作成時に `’http’ => [‘proxy’ => ‘http://192.168.16.1:10’]` を追加することで、プロキシ環境下でAWS SDK for PHPを利用したS3へのアクセスが可能となります。
“`php
require ‘vendor/autoload.php’;use Aws\S3\S3Client;
use Aws\Exception\AwsException;$s3 = new \Aws\S3\S3Client([
‘resion’ => ‘ap-northeast-1’,
‘version’ => ‘latest’,
‘profile’ => ‘default’,
‘http’ => [‘proxy’ => ‘http://192.168.16.1:10’]
]);“`
# 参考
↓の `proxy` を参照
https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/getting-started_basic-
PHPの配列に関して簡単にまとめる
## PHPの配列とは
– 配列とは、変数に背番号のようなものを付けて拡張し、複数のデータを扱えるようにしたもの
– 配列はデータを「キー/値」のペアにしている
– 「キー/値」のペアになっているデータを配列の要素と言う
– 配列には順序があり要素が追加された順に並んでいる
– 配列にはすべてのデータ型の値を格納することが出来る### 配列の基本的な書き方
基本形(リテラル)では1つの変数を定義して、その変数に対して値を代入する。
PHPの配列(Array)の場合は、わかりやすく言うとこの変数の値が複数格納できるものになる。“`
$fruits = array(‘apple’, ‘orange’, ‘grape’);
“`
もしくは下記のような書き方もできる。
最近だとこちらの方が一般的か。
“`
$fruits = [‘apple’, ‘orange’, ‘grape’];
“`### 配列の出力
出力する際は以下のように記述をします。
“`
$fruits = [‘apple’, ‘orange’, ‘grape’];// var_dump の場合
var
AWS SDK for PHPでS3からgzipファイルをそのまま(展開されることなく)取得したい
# はじめに
PHPでaws-sdkを使用してS3からファイルをダウンロードする際に、gzipファイルが展開された状態で出力される場合があります。
特に、gzipのままファイルが欲しい場合に困ってしまいます。# 対応
クライアント作成時に `’http’ => [‘decode_content’ => false]` を追加することで、gzipファイルが展開されずに(gzipファイルのまま)取得することができます。“`php
require ‘vendor/autoload.php’;use Aws\S3\S3Client;
use Aws\Exception\AwsException;$s3 = new \Aws\S3\S3Client([
‘resion’ => ‘ap-northeast-1’,
‘version’ => ‘latest’,
‘profile’ => ‘default’,
‘http’ => [‘decode_content’ => false]
]);“`
# 参考
↓の `decode_conte