PHP関連のことを調べてみた2022年04月28日

PHP関連のことを調べてみた2022年04月28日

LaravelでMockeryを使った試験の話

サービスを試験する時、試験対象サービスから別の連結するサービスがあったとします。 その時はどう試験しますか? 以降の連なるサービスを含めて試験を行うというのは変ですね。 Unit試験は自己完結が範囲だとか愚行します。 以降のサービスに不具合があった場合にはこのサービスの試験がNGになるのは変です。 つまりは以降のサービスをブラックボックスにできる方法がベストです。 次のサービスに引き渡す値の結果が想定した結果を戻るだけでいいのです。 これを解決するのにMockery(mock)を使います。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2481837/8e94a90d-9cdd-167f-f402-8152433d4bbe.png) # mockとは mockとは… 辞書で調べるとこんな感じです。 まがいの、偽りの、まねごとの https://ejje.weblio.jp/content/mock mockオブジェクトとは本来のオブジェクトではなく想定の結果を返すオブジェクト
元記事を表示

【Laravel】CSVファイルのデータインポート&エクスポートする方法

Laravel でテストケースを書く際にCSVファイルのデータを挿入する機会があった。その際は、Seederファイルを作成して、そのテストケース用のデータを挿入した。しかし、実際に利用するCSVファイルからデータを挿入する方が早いと思ったため、今回その機能を実装してみることにした。 また、挿入したデータをCSVファイルとして出力できたら、相互的にデータのやりとりができると思い、CSVファイルのエクスポートも実装してみた。 まずは、CSVファイルファイルをインポートし、データを挿入することから行う。 # CSVファイルからのインポート 処理の流れとして、フォーム欄からCSVファイルのアップロードを行、CSVファイルをストレージに保存する。その内容をもとにコレクションを作成し、データベースに挿入するという流れで実装する。 まとめると、以下のようになる。 **処理の流れ** ①フォーム欄からCSVファイルの取得 ②取得したCSVファイルをコレクションに置き換える ③置き換えたコレクションに対して不正なデータがないかの確認 ④置き換えたコレクションを配列にしてデータベースに挿入 #
元記事を表示

PHP unset 変数削除

## 用途 定義した変数を削除したい時に使う。 配列から指定した値を削除したい時に使う。 処理の終わりに毎回変数をリセットしたい時などにも使える。 ## 使用方法 “`php:変数削除 $hoge = “ほげほげ”; unset($hoge); // $hogeという変数を削除 var_dump(isset($hoge)); // bool(false) “` isssetの結果、falseが返ってきているから削除できている。 “`php:配列から指定した値を削除 $hoge = array(0, 1, 2, 3, 4, 5); unset($hoge[1]); // 配列の「1」が削除される print_r($hoge); // 結果 [0] => 0 [2] => 2 [3] => 3 [4] => 4 “` ※配列の場合は、削除したいインデックスを指定する。
元記事を表示

PHP $_SESSION 一連の流れ

## 用途 サーバー側に、サイトを訪れたユーザの情報を個別に保存しておいて、情報をもとにさまざまなページで処理をしたい時に使う。 ## 使用方法 ### 一連の流れ #### 1.セッションに保存する “`php:ファイル①(セッションに保存するファイル) “` ※セッションは連想配列で保存される。 #### 2.セッションに保存したものを別ファイルで使用する “`php:ファイル②(上記のファイルで保存したものを他のファイルでも使えることを解説するファイル)
元記事を表示

file_get_contents 関数

# file_get_contents – phpに標準で用意されているビルトイン関数 – urlの情報を取得する ## 例 “` “`
元記事を表示

Laravel phpunitを実行した時に419エラーが発生した時の対処法

## 環境 – PHP: 8.1.5 – Laravel: 9.9.0 ## テストコード “`php:tests/Feature/Http/Controllers/Auth/LoginControllerTest.php
元記事を表示

PHP で if ($var) と書かれていてよく思考停止する話~ if の動きまとめ

## tl;dr if の中には「はい」か「いいえ」で答えられるような表現を書きましょう。 — PHP でよく見られる次の書き方。 “`php if ($var) { // 何らかの処理 } “` これを日本語にすると「もし $var ならば」 ・・・何が?? 私としては、日本語に直せない if 文の表現は書くべきではないと思っています。 ですが、会社の既存コードにはやむを得ず `if ($var)` が登場することがあります。 PHP の保守案件に関わったりする場合は、やはり動きを知っておかなければなりません。 ## `if ($var)` の動き 下の記事にあるように、if の括弧内に書かれた表現は真偽値 (true または false) として解釈されます。 解釈された結果が true の場合は処理を実行し、false の場合は実行しません。 https://www.php.net/manual/en/control-structures.if.php > expression is evaluated to its Boolean valu
元記事を表示

PHPで簡易的なサーバーを立ち上げる

# 概要 PHPで素早くlocalhostでページを確認したい! MAMP使う時間もない! という時に簡易的なサーバーを立ち上げる時の流れです。 ## 手順 どこでも良いので、フォルダを作成します。 vscodeを立ち上げて作成したフォルダをドラッグアンドドロップします。 フォルダの中にindex.phpファイルを作成します。 “` ウェブサーバーのテスト

HelloWorld!

“` 上のターミナルから新しいターミナルを立ち上げてコマンドを入力(ポート番号はなんでもOK) “` php -S 127.0.0.1:8080 “` 127.0.0.1:8080にアクセスすると ![スクリーンショット 2022-04-27 16.35.59.png](https://qiita-image-store.s3.a
元記事を表示

Laravel Controller作成時のオプション

# コントローラー作成時に便利なコマンド 大体のプロジェクトはCRUD処理を使うと思うのでアクション設定の記述をしなくても 勝手に作ってくれる! 二つ目はAPI用 “` php artisan make:controller SampleController –resource php artisan make:controller ApiController –api “` 便利!
元記事を表示

WordPressで時間がずれてしまう

# 前提 WordPressでcurlコマンドを使用し外部APIから日時を取得し表示したいが、 時間がずれてしまう、、、 WordPressの管理画面でTimeZoneの設定が出来るらしいが、 筆者はWordPressの設定に詳しくないので コードを書いて実装したいと思いました。 ## 対処 一般的な記述をすると世界標準時が表示され9時間程ずれる。 “` date(“Y-m-d H:i:s”); “` “` $hoge = $get_response_data[‘datetime’]; $timezone_tokyo_hoge = DateTime::createFromFormat(‘Y-m-d\TH:i:s+’,$hoge); $timezone_tokyo_hoge->setTimezone(new DateTimeZone(‘Asia/Tokyo’)); echo date_format($timezone_tokyo_hoge,”Y年m月d日 H時i分”); “` とりあえずこの変数内ではtimezoneの設定が出来ている。
元記事を表示

PHP Laravel 開発環境構築 mac

### 目的 PHP Laravelの開発環境を作ってみる。 ### ゴール 新規プロジェクトを作って開発サーバをrunする ### php のinstallをしたい とりあえずターゲットを知りたいのでコマンドを叩く “` ~ $ brew search php Error: Permission denied @ rb_sysopen – /private/tmp/github_api_headers20220426-3375-wye0ru “` む??、権限。。。設定しなおして再実行 でけた “` ~ $ brew search php brew-php-switcher php@7.2 phplint pcp php php@7.3 phpmd pup php-code-sniffer php@7.4 phpmyadmin php-cs-fixer php@8.0
元記事を表示

34歳未経験おやじが自社開発企業に転職した話し

# [この記事について](#-この記事について) この記事は34歳未経験のおじさんが第一志望の自社開発企業に内定を頂いた話しです。私のように現状に危機感を覚えたりしてプログラミングを勉強している方の参考になれば幸いです。 そしてこの記事は30代未経験が転職をする為の近道になるものではありません。あくまで***考え方***についてや転職市場の情報を記載したものです。近道を探してる方は ***「エンジニア 転職 3ヵ月」*** とかで検索してみて下さい。 そこで出てきた検索結果に飛びつきたくなると思います。 しかし絶対不幸なります。 20代前半はまだそれほど技術がなくても***「ポテンシャル採用」***の希望があります。 30代のエンジニアへの転職に必要なのは個人的に以下の3つ * 前職での経験・・・マネジメントや課題解決能力など、プログラミングスキル以外でも活躍の幅があるか? * 自走力・・・どの企業も教育コストは将来のある若者にかけたいです。おじさんは勝手に成長しましょう。 * 現
元記事を表示

PHPのクラス名の付け方について(メンターの人に指摘を受けたこと)

プログラミングスクールでデータベースのモデルを作る際、クラス名にアンダーバーを付けたのですが、メンター(講師の人)に見てもらったとき通例PHPではクラス名にアンダーバーはつけないと言われました。 “`php_faulse.php class Sample_Class “` “`php_true.php class SampleClass “` # 調べたら 自分で調べたらアンダーバーを付けるのは間違いではないと出ていましたし、ドキュメントでもアンダーバーを付けることに対して間違いであるという言及はされていませんでした。 # 結局 結局、自分でつけたアンダーバーは外し、頭文字大文字で表記するようにしました。 # どっちがいいかわからない 釈然としませんが、アンダーバーはつけてもいいのかどうか迷うところです。 皆さんはどう思うでしょうか?
元記事を表示

PHPのPhinxで直接PDOオブジェクトを使いたいとき

これだけです。 “`php // @var \PDO $db = $this->getAdapter()->getConnection(); “`
元記事を表示

PHP sprintf フォーマットに沿って文字や数字を代入・先頭に0を追加する

## 用途 文字や数字をフォーマットに沿って代入したいときに使う。 先頭に0を追加したいときに使う。 ## 使用方法 “`php:書き方 sprintf(表示したい文字列のフォーマット, 表示したい文字1, 表示したい文字2, ….) “` ### フォーマットについて(記述したもの以外にもあります) `%s` には文字列、`%d` には数値を代入できる。 例 「〇〇くんは、おもちゃを〇個持っています。」という文に代入する場合は下記のフォーマットになる。 “` %s くんは、おもちゃを %d 個もっています。 “` 「田中くんは、おもちゃを3個持っています。」という文を作る場合は下記のようになる。 “`php: sprintf(“%sくんは、おもちゃを%d個もっています。”, “田中”, “3”) “` ※表示したい文字には変数を入れることもできます。 “`php: $name = “田中”; $number = “3”; sprintf(“%sくんは、おもちゃを%d個もっています。”, $name, $number) “` ### 先頭に0を追加する “
元記事を表示

LaravelでのMigration/Seederを使ったDB試験の話

Laravelの自動テストにおいてDBを使った試験はどうしますか? DBを使った自動テストは作っていなませんという人も多いでしょう。 今回はMigrateとSeederを使いDBを使った試験を実現します。 # migrateとseederとは migrationでは定義ファイル通りにスキーマを作成します。 seederでは作成された空のスキーマにデータを入れます ということです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2481837/fa410a91-e97f-0674-207a-7105c1a4b735.png) # migrationとは マイグレーションはデータベースのバージョン管理のようなものです。 データベースのスキーマ定義し共有することができるようになります。 ソース管理から変更を取り込んだ後、ローカルデータベースのスキーマにカラムを追加するよう指示があるなら、差分を更新されます。 その差分管理を行うにはマイグレーションが問題を解決するでしょう。 参考 : h
元記事を表示

GutenbergのHTMLコメント(Data & Attributes)で囲われたHTMLを拾ってREST APIのフィールドに追加する(TODOあり)

“`php add_action(‘rest_api_init’, function () { register_rest_field(‘[投稿タイプ名]’, ‘[フィールド名]’, [ ‘get_callback’ => function ($object): ?array { /** * htmlを用意する */ $html = $object[‘content’][‘raw’] ?? null; /** * Gutenbergのhtmlコメントで囲われたhtmlを拾う * * 以下htmlの場合[コンポーネント名]、[コンポーネントノーズ]を拾う * * [コンポーネントノーズ] *
元記事を表示

Laravel8のFormRequestで2つのうち片方のみ必須のバリデーションを作る

# やること タイトルのまんま。 FormRequestを使って2つのうちいずれか必須のバリデーションをしたいけど標準のバリデーションルールにそんなものはないっぽかったので自作します。(あったら教えてください!) `required_without:hoge`でそれっぽくできそうなんだけど、これだとどちらも入力されているときに弾くことができない。 # やる 入力にはname1とname2があり、いずれか片方のみ必須という条件でバリデーションをかける。 Artisanコマンドでファイル作成 “`shell php artisan make:rule EitherRequired “` “`php:EitherRequired.php
元記事を表示

私だけがずっと困っていたphpbrew+mysqlのコンパイル

Phpbrewでphpのバージョン管理をしているのですが、もろもろコンパイルに苦労したときの話。 ## 私のmacの環境 * homebrewにてmysql5.7と8.0がインストールされており稼働中。 * PHP7.4とPHP8.0が必要 ## phpとmysqlの対応表 |PHP | mysql | |:———–|————:| | 7.4 | 5.7 | | 8.0 | 8.0 | ### phpbrewでphpのインストール 8.0に関してはあんまり苦労しなかった。 “` phpbrew install 8.1.0 +mysql=”$(brew –prefix mysql)” +pdo= +gd=”$(brew –prefix gd)” +bz2=”$(brew –prefix bzip2)” +apxs2= +json= +phar= +xml= +curl=”$(brew –prefix curl)” +zip= — –with-mysqli=/usr/local/opt
元記事を表示

パーフェクトPHPをDocker環境で

# 概要 パーフェクトPHPで環境構築をローカルでやりたくなかったので、Dockerで環境構築しました。 自分と同じこと考える方もいるかもしれないので記事にしました。 # 前提知識 Dockerを軽く触れる人向けです。 自分はほとんど触れません。 # 内容 パーフェクトPHPではサーバーとしてApacheを使っていますが、自分が使い慣れているのでnginxにしてあります。 ## ディレクトリ構成 “` . ├── docker │ ├── db │ │ ├── Dockerfile │ │ └── my.cnf │ ├── php │ │ ├── Dockerfile │ │ └── php.ini │ └── nginx │ └── default.conf ├── server │ └── study.localhost <= phpファイルを置く場所(ドキュメントルート) │ └── index.php <= 'study.localhost'にアクセスした時に実行されるPHPファイル。(/
元記事を表示

OTHERカテゴリの最新記事