タグ

qiitaとPHPに関するsatoshieのブックマーク (213)

  • Bladeコンポーネント - Qiita

    Blade Componentsとは データの受け渡し、Viewの表示などでControllerが肥大化してしまうのを防ぐためにある仕組み。 コンポーネントの機能を使うと、新しくコンポーネントクラスやBladeコンポーネントクラスを作って、機能を分け、そこにデータの受け渡しなどを任せることで、Controllerはreturn viewするだけで良くなり、負担が軽くなる。 またコンポーネント側を修正するとそのコンポーネントを使っているファイル全てに修正が反映されるのが便利。 Bladeの種類と違い Blade Componentsを使わない場合(従来のBlade) Blade Componentsを利用しない場合は、@extend, @yield, @sectionといったディレクティブを使ってレイアウトを作成する。resources¥viewsの下にlayoutsフォルダを作成しapp.

    Bladeコンポーネント - Qiita
  • PHP 7.4 と xdebug 3.2 だとバージョンの不一致で Docker の build がうまくいかない。 - Qiita

    1. 現状確認 1-1. やりたいこと 過去作成した以下の個人開発アプリのDockerイメージをビルドして、Dockerコンテナを生成、起動したい。 1-2.エラー内容 以下の docker コマンドを実行したところ、エラーが発生して、ビルドできない。 #0 242.0 creating bcmath.la #0 242.0 (cd .libs && rm -f bcmath.la && ln -s ../bcmath.la bcmath.la) #0 242.0 /bin/bash /usr/src/php/ext/bcmath/libtool --mode=install cp ./bcmath.la /usr/src/php/ext/bcmath/modules #0 242.1 cp ./.libs/bcmath.so /usr/src/php/ext/bcmath/modules

    PHP 7.4 と xdebug 3.2 だとバージョンの不一致で Docker の build がうまくいかない。 - Qiita
  • 【Laravel】PHPUnitの実行でDBを汚染しないためにできる簡単なこと - Qiita

    環境 OS: Windows 10 PHP: 8.1.2 Laravel Framework: 8.81.0 docker-compose: 1.29.2 PHPUnit: 9.5.10 MySQL: 8.0 Laravel Sailを使用して、Laravelプロジェクトを立ち上げています。 プロジェクトを立ち上げる部分は、こちらのドキュメントでご確認ください。 RefreshDatabase DBの状態に影響されずテストする use RefreshDatabase;をしてあげると、 テストを実行する際に前後のDBの状態を考える必要がなくなります。 各テスト毎にDBをリフレッシュするため、まっさらな状態にしてくれるので、 DBの状態を確認するアサーションである $this->assertDatabaseCount(...); $this->assertDatabaseHas(...); $

    【Laravel】PHPUnitの実行でDBを汚染しないためにできる簡単なこと - Qiita
  • LaravelでPHPUnitを使ってテストする手法 - Qiita

    はじめに 筆者、テストというものの存在は上司から教わり、書き方も自分で調べながら、さぐりさぐりで書いてみたので、 この記事の書き方や説明が必ず正しいという保証はできない。 自分の備忘録的なものも兼ねての記事なので、参考程度に見て頂きたい。 テストとは何か 簡単に言えば、 このアプリ、当にイメージした通りに動いてるのか? っていうのを、確認してくれるもの。 どういうことかと言うと、 ここでの表示はこれだ! ここではこの処理をして、こういう結果が帰ってくるんだ! というのを、あらかじめすべての処理について、テストに書いておく。 そうすることで、なにか不具合があっても、 「ここの表示、君のイメージと違うみたいだよ」 「ここの処理、君の思うようには動いてないよ」 という感じで、テスト君が教えてくれるということだ。 なぜテストを書くのか 例えば、複数人でなんかの開発をしてて、 「やったーー!!完成

    LaravelでPHPUnitを使ってテストする手法 - Qiita
  • LaravelとPHPUnitでテスト用DBを使う方法

    はじめに LaravelPHPUnitを使用する際に、テスト用のDBMySQL)を 使用する方法について学んだことを備忘録として残します。 テスト用DBを使用することで、テスト時のRefreshDatabaseなどで 開発用DBの必要なデータも含め削除されてしまう、といったことを防ぎ 別環境のDBに影響を与えずテストを行うことができます。 環境 PHP 8.2.7 Laravel 10.22.0 PHPUnit 10.3.3 設定手順 database.phpへの設定 まず、Laraveldatabase.phpのconnectionsにテスト用DBの設定を追加します。 'connections' => [ ... // テスト用 'mysql_test' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' =

    LaravelとPHPUnitでテスト用DBを使う方法
  • 【PHP8.4】メソッド引数のデフォルトnullがついに禁止される - Qiita

    よく見たら不自然なんだけどこれまで普通に許されていた、この引数デフォルト値がついに禁止されます。 何がおかしいって型がintなのに引数を渡さないと$xがnullになるので矛盾してしまうわけですね。 これはPHPが昔からの仕様を残しておいたためであり、いわゆる歴史的経緯というやつです。 以下は該当のRFC、Deprecate implicitly nullable parameter typesの日語訳です。 PHP RFC: Deprecate implicitly nullable parameter types Introduction PHP7.1で?T構文、さらにPHP8.0でUnion型がサポートされたことにより、PHPはnull許容値型を正しく書くことができます。 歴史的にはPHP5.0でオブジェクト型、PHP5.1でarray、PHP5.4でcallable、PHP7.0で

    【PHP8.4】メソッド引数のデフォルトnullがついに禁止される - Qiita
  • PHPでAWSのS3に画像アップロード&画像を画面表示(設定〜実装まで) - Qiita

    背景 ファイルシステムに画像をアップロードする処理を実装してHerokuにアップロードしたところ、Herokuは1日1度のDynoの再起動に伴いアップロードしたファイルを全消去するという仕様があることが判明。 それはアカン!ということで画像アップロード先をAWSのS3に変更しようとしたところHerokuにドキュメントがあったので参考にしたけど何一つうまくいかなかった(多分事前の設定とか必要だったけどそこら辺は省かれていた)ので色々調べて実装した内容をシェアします。 事前にS3側で必要な設定〜実装までの流れを出来るだけ省かずに記載するのできっと参考になると思います。 AWSアカウント作成 何はともあれ、まずはAWSのアカウント作成からです。 AWSアカウント作成はここを見れば普通に出来ると思います(見なくても出来ます) https://aws.amazon.com/jp/register-f

    PHPでAWSのS3に画像アップロード&画像を画面表示(設定〜実装まで) - Qiita
  • 【PHP8】match 式のこれまでとこれから - Qiita

    $say = match (idate("w")) { 0 => "weekend!", 1, 2, 3, 4, 5 => "weekday :(", 6 => "weekend!", default => "", }; echo "Today is $say"; コード量が少ないのはもちろんのこと、変数の代入操作などが減って処理の見通しがより良いですし、バグが入り込む余地も減りました。match は可読性と安全性に強く貢献する構文と言えます。 しかし match が取り入れられるまでには少しの紆余曲折がありました。この記事では、match が導入されるまでの経緯から、match の今後までを追っていきます。 元々は switch の拡張として構想された match に至るまでの道筋を過去に辿っていくと、以下の RFC にたどり着きます。これが match の直接の起源とみて良いと思います

    【PHP8】match 式のこれまでとこれから - Qiita
  • PHPUnitでHTMLコードカバレッジを出すまで(Docker使用) - Qiita

    はじめに 以下記事の【phpunitを少し使ってみる】までは行っている前提で話します。 最終的表示までのものgithubにあげているのでもしよかったら見てください。 どこに何を書けばいいかもここのファイル等見てもらった方が早いかもです。 最終的な見た目は以下のような感じです。 上記の【phpunitさわるまで】以降にすること箇条書き ※HTMLでコードカバレッジを表示するのに必要な設定 【step1】 tokenizer(拡張モジュール)追加 【step2】 Xdebug(拡張モジュール)追加 【step3】 php.iniの設定、反映(Xdebug(拡張モジュール)有効化) 【step4】 phpunit.xml(コードカバレッジ出力のための設定ファイル的なもの)の作成 【step5】 メソッドの修正 【step6】 最後に出力コマンド 【step1】 tokenizer(拡張モジュール

    PHPUnitでHTMLコードカバレッジを出すまで(Docker使用) - Qiita
  • 【Laravel】開発環境では「php artisan config:cache」をするべきではない - Qiita

    Q. なぜ? A. ドキュメントにそう書いてある。 The command should not be run during local development as configuration options will frequently need to be changed during the course of your application's development. (意訳)アプリケーションの開発中には設定を頻繁に変更する必要があるので、ローカル開発環境ではこのコマンドは実行するべきではありません。 Q. そう書いてある、では納得できない! A. 一度php artisan config:cacheを実行すると、それ以降(キャッシュを消去しない限り)configディレクトリ配下の設定ファイルを修正するたびにphp artisan config:cacheを実行しなければ設

    【Laravel】開発環境では「php artisan config:cache」をするべきではない - Qiita
  • 【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita

    PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同

    【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita
  • declare(strict_types=1)の効力範囲について - Qiita

    declare(strict_types=1); とは、PHP7から導入された、厳格な型検査モードの指定構文です。 有効範囲をあまり把握してなかったのでまとめてみました。 strict_types基の動き 例えばこんなコード。 <?php function add(int $a, int $b): int { return $a + $b; } var_dump(add(1.0, 2.0)); この状態で単体実行すると、int(3)が出力されます。 渡しているのはdouble型なのですが、よしなにキャストされて処理されています。まあ、昔ながらのPHPらしい動きです。 ここで、declare(strict_types=1)を有効にしてみます。

    declare(strict_types=1)の効力範囲について - Qiita
  • PHPでAPCuを使って共有メモリにキャッシュを実現する方法 - Qiita

    ../ PHPのAPCuというライブラリを利用してみた。標準のPHPには同梱されていないので、ダウンロードしてDLLを追加した。APCuは「APC User Cache」の略である。APCは「Alternative PHP Cache」の略である。(ちなみに、PHPは「PHP Hypertext Preprocessor」の略である。再帰的な略になっている。GNUの「GNU's Not Unix!」を真似たのかな。) JavaとTomcatでは、高速化のため、またDBやファイルへのアクセス負荷を軽減するために、メモリ上にキャッシュを作成して利用することがたびたびある。探索時にはメモリ上のキャッシュから探し、なければDBやファイルから検索したり、読み込んだりする。PHPでは、ブラウザで画面が遷移するごと(redirectするごと)に新たなプロセスが生成されるので、メモリ上に生成したオブジェク

    PHPでAPCuを使って共有メモリにキャッシュを実現する方法 - Qiita
  • 【PHP8.1】呼び出し元に返らない返り値の型が指定できるようになる - Qiita

    この関数の返り値の型は何にすればいいでしょうか。 null? void? nullはnullという型ですし、voidは『値を返さない』であって『呼び出し元に返らない』ではありません。 ということで『呼び出し元に返らない』を明記できる型が提案されました。 返らないのに返り値とは。 PHP8.1以降ではこう書けるようになります。 以下は該当のRFC、PHP RFC: noreturn typeの日語訳です。 PHP RFC: noreturn type Introduction ここ数年の傾向として、元々はPHP docで表現されていた型がPHPネイティブになっていくということがあります。 過去の例としてはスカラー型、返り値の型、UNION型、mixed型、static型などです。 現在、PHPの静的解析ツールは、常に例外を発したり常にexitしたりする関数を示すために、@return no

    【PHP8.1】呼び出し元に返らない返り値の型が指定できるようになる - Qiita
  • PHP8.1でDeprecatedの警告が出る件 #[\ReturnTypeWillChange] - Qiita

    Deprecated Error: Return type of Foo\Bar\Hoge\Hoge::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice In [/var/www/html/api/vendor/Foo/Bar/src/Hoge/Hoge.php, line 179] 業務で使っているCakePHP4.1のレポジトリをPHP8.0からPHP8.1にしたタイミングで大量に発生した。 これは何なのかっていうのを調べると、PHPのマニュアルに行き着いた。 PHP のバー

    PHP8.1でDeprecatedの警告が出る件 #[\ReturnTypeWillChange] - Qiita
  • Laravelで"could not find driver"が出たときの対処法 - Qiita

    LaravelからMySQLに接続する 環境情報 ・PHP 7.1.23 ・CentOS Linux release 7.4.1708 (Core) ・MySQL 5.6.39 "could not find driver"が私を襲う 背景 元々sqliteで環境を作っていたが、あまりにサーバの動作が安定しないためMySQLにすることにした。 これが悲しみの正体である 良く書かれているようなコマンドは叩いた。

    Laravelで"could not find driver"が出たときの対処法 - Qiita
  • WindowsにPHPを導入してVSCodeで開発を始めるまでの手順 - Qiita

    はじめに Windows上に最新版のPHPをインストールして使い始めるまでに必要な最低現の手順を、備忘録としてメモしてみました。 このドキュメントはローカル開発環境の構築をターゲットにしていて、Webサーバ環境は目的としていませんのでご注意ください。 事前準備 再頒布可能パッケージのインストール PHPバイナリの実行に「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」が必要な為、以下よりダウンロード・インストールしておく。 https://www.microsoft.com/ja-jp/download/details.aspx?id=48145 インストール手順 PHPのインストール 以下の手順でPHP For Windowsをインストールする。 PHP For Window をダウンロードする http://windows.php.net/down

    WindowsにPHPを導入してVSCodeで開発を始めるまでの手順 - Qiita
  • xdebug3.2.0でphp7がサポート対象外になったのでDockerfileを直した - Qiita

    概要 Xdebug最新版はphp7をサポート対象から外した よってphp7環境を構築するときはXdebugは3.1.6以前を指定しなければいけなくなった それに伴ってローカル開発環境のDockerfileを直した 文 ビルドが失敗するようになった ローカル開発環境を再構築する必要があったので docker-compose up したところ、エラーが出てました。 > [ 5/17] RUN pecl install xdebug && docker-php-ext-enable xdebug: #9 5.238 pecl/xdebug requires PHP (version >= 8.0.0, version <= 8.2.99), installed version is 7.3.29 #9 5.238 No valid packages found #9 5.238 install

    xdebug3.2.0でphp7がサポート対象外になったのでDockerfileを直した - Qiita
  • forkしたrepositoryをcomposer requireでインストールする - Qiita

    背景 使用していたライブラリがアーカイブされてしまった😭 代替パッケージへの乗り換えはコスト高くて難しい🤔 いつ削除されるか分からなくて怖い😱 ライブラリをメンテナンスしたい💪 フォークしていれば、リポジトリは残る アーカイブされたリポジトリは一定期間で削除されてしまう可能性があります。 数年後リポジトリが消えていきなり動かなくなったことを考えるとめちゃ怖い。 プライベートリポジトリを削除すると、そのフォークもすべて削除されます。 パブリックリポジトリを削除しても、そのフォークは削除されません。 フォークしとけば、上流リポジトリが消されても安心みたい! (プライベートリポジトリに変更した上で削除されたらどうなってしまうんやろか...?🤨) 手順 例として package/foo のパブリックリポジトリをforkして mycompany/foo のリポジトリを作った場合の手順になり

    forkしたrepositoryをcomposer requireでインストールする - Qiita
  • 何故Javaは敬遠されるのか? - Qiita

    何故かJavaは敬遠される!? 筆者はIT業界に努めて17年ほどです。 SESとして働きに出ることが多かったのですが、近年はWebエンジニアとして PHP(Laravel)を使った開発が多くなってきています。 そんな開発現場ですが、プログラミング言語の話題に上がると 「Javaはわからない」 「Javaって難しいんでしょ?」 「環境構築がなぁ・・・」 なんて話をよく聞きます。 私はJavaの方が経験した期間が長かったので、特にそういった苦手意識は無いのですが Laravelの現場でもそういった話を聞くので、 「フレームワークの特性や、コードの書き方は結構似ているところが多いのに、何でみんな苦手なんだろう?」 と思ってしまうのです。 今回はそのギモンについて、私が思っていることを書いていきます。 (注:Java嫌いな人を論破したいわけではありませんw) 原因その1:インフラ構造上、難しいと思

    何故Javaは敬遠されるのか? - Qiita