20210428のPHPに関する記事は5件です。

【XAMPP】 phpmyadmin サーバー上でいくつかのエラーが検出されました 対処法

XAMPPでphpmyadminを起動させデータベースを選択すると、 いきなり「phpmyadmin サーバー上でいくつかのエラーが検出されました」という警告が出てきたので、 対処法をメモ。 原因を一つ一つつぶして行っても良いかと思いますが、 触っていないファイルのエラー数が多かったので、 原因はphpmyadminのバージョンが古いのではと推測。 phpmyadminのサイトを調べてみると、 確かにphpmyadminのバージョンと対応するPHPバージョンが合っていないと判明。 ▼phpmyadmin EWBサイト https://www.phpmyadmin.net/downloads/ XAMPP/phpMyAdmin ファイルを、XAMPP/phpMyAdmin.oldなどと名前を変更し、 新しいバージョンのファイルを上記サイトからダウンロードし、phpMyAdminに名前を変更後 XAMPPディレクトリ配下に入れる。 (もともとphpMyAdminがあった場所と同じところ) (例えばphp7.1なら) phpMyAdmin-5.1.0-all-languages.zip ⇒ XAMPP/phpMyAdmin phpMyAdmin.oldからconfig.inc.phpをコピーし、 phpMyAdminに入れなおす。 XAMPP/phpMyAdmin/config.inc.php(入れる) MySQLを再起動させると、エラー解消。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHPStanで配列を型としてチェックする新機能ができていた

PHPStan 0.12.84 で Local type aliases の機能が実装されたようだ。 元々、型のエイリアスの機能はあったんだけど、グローバル設定だった。 それがクラス用に定義できるようになったみたいだ。 /** * @phpstan-type UserAddress array{street: string, city: string, zip: string} */ class User { /** * @var UserAddress */ private $address; // is of type array{street: string, city: string, zip: string} } /** * @phpstan-import-type UserAddress from User */ class Order { /** @var UserAddress */ private $deliveryAddress; // is of type array{street: string, city: string, zip: string} } 今から新しく作るプログラムで使う必要はないけど、古いプログラムで配列を多用していて型チェックできないと困っている場合には有効そうだ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravelで入れ子構造のform

Laravel Collectiveで入れ子構造のformの書き方 前提 バージョン:Laravel6、HTML5 Laravel Collective 導入済み 実装方法 HTML5ではinputタグにform属性を追加することで任意のformに対応させることができる。 ①formにidを付ける Form::openの引数でidを設定する。 {!! Form::open(['route' => 'ルート指定', 'method' => 'メソッド指定', 'id' => 'id指定']) ②inputにform属性を付ける Form::**の引数でform属性にformタグのidを指定する。 {!! Form::text('変数名', '初期値', ['form' => 'formのidを指定']) !!} {!! Form::submit('表示名', ['form' => 'formのidを指定']) !!} ③中身を任意の場所に置く formタグ自身は入れ子にできないため、中身だけを任意の場所に置く。 サンプル 簡単なサンプル。 このサンプルでは入れ子にする意味は特にないが、入れ子構造はフォーム内にリセット・検索・抽出など機能を持つ要素を配置したいときに役立つ。 コード demo.blade.php <body> <!-- formタグ自身は入れ子にできないので外側に配置 --> {!! Form::open(['route' => 'demo1', 'method' => 'post', 'id' => 'form1']) !!} {!! Form::close() !!} <!-- 本体となるform --> {!! Form::open(['route' => 'demo2', 'method' => 'post', 'id' => 'form2']) !!} <!-- 入れ子にしたいformの中身 --> <div> {!! Form::label('text1', 'フォーム1') !!} {!! Form::text('text1', '', ['form' => 'form1']) !!} {!! Form::submit('送信1', ['form' => 'form1']) !!} </div> <!-- 本体となるformの中身 --> <div> {!! Form::label('text2', 'フォーム2') !!} {!! Form::text('text2', '', ['form' => 'form2']) !!} {!! Form::submit('送信2', ['form' => 'form2']) !!} </div> {!! Form::close() !!} <p>フォーム1の送信結果:{{ $text1 }}</p> <p>フォーム2の送信結果:{{ $text2 }}</p> </body> web.php Route::get('/demo', 'DemoController@demoget')->name('demo'); Route::post('/demo1', 'DemoController@demo1')->name('demo1'); Route::post('/demo2', 'DemoController@demo2')->name('demo2'); DemoController.php public function demoget() { return view('demo',[ 'text1' => '未送信', 'text2' => '未送信' ]); } public function demo1(Request $request) { $text1 = $request->text1; return view('demo',[ 'text1' => $text1, 'text2' => '送信なし' ]); } public function demo2(Request $request) { $text2 = $request->text2; return view('demo',[ 'text1' => '送信なし', 'text2' => $text2 ]); } 実行結果 ~/demoにgetアクセス 上記入力の状態で「送信1」 上記入力の状態で「送信2」
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel Sail が絶妙に使いづらかった件

お疲れ様です。 新しくプロジェクトを構築しようと思い、新し目のソリューションのLaravel Sailを利用してみました。 使ってみた結果、良い点もありましたが絶妙に使いづらかったので、整理のためにまとめます。 公式: https://readouble.com/laravel/8.x/ja/sail.html 良い点 ローカル環境が爆速で構築できる すでにDockerを利用している人なら数ステップでローカル環境が構築できます。 docker-compose.yml等を書く必要がありません。 使いづらい点 全体的に、プロジェクト作者のためだけの設定になっているように思います。 これをリモートリポジトリにpushし、他の人がcloneする際に問題が発覚します。 ./vendor/bin/sail が .gitignore で無視されている vendor配下はデフォルトで.gitignoreに記載されているので、git cloneした人はsailコマンドを打つことができません。 また、./vendor/bin/sailの他に./vendor/laravel/sailも必要です。 他の開発者にもLaravel Sailを利用してもらうなら(普通はそうしたいと思いますが)、 vendorの一部のファイルの無視設定をやめるため、vendor配下に以下のファイルを追加するなどの対応をする必要があります。 つまり依存パッケージ(sail)をリモートリポジトリにpushできるようにしてしまっているのでいまいちです。 (これをやらずに最初はdocker-compose upしてもらうようにすれば良いか…??) ./vendor/.gitignore /* !.gitignore !/bin/ /bin/* !/bin/sail !/laravel/ /laravel/* !/laravel/sail composerのscriptが実行された前提になっている プロジェクトをcloneした人は自前で以下のコマンドを打つ必要があります。 (もちろんMakefileなどで管理するのでも良い) (composer createでプロジェクトを作成した人は、composerのscriptが実行されるので何もしなくてもOK) cp .env.example .env 上記が無いと、コンテナ構築の際に.envの設定を読めないため、 コンテナを作り直さないとrole "root" does not exist docker(PostgreSQLの場合)とか言われてDBに接続できなくなったりします。 upする前に必ず.envを用意してください。 ./vendor/bin/sail composer run-script post-create-project-cmd #または ./vendor/bin/sail php artisan key:generate --ansi 上記が無いと、No application encryption key has been specified.とか言われてLaravelが実行できません。 composer installされている前提でwebサーバーが動く プロジェクトをgit cloneしてきたらまず、依存パッケージをインストールするため、composerをinstallしないとLaravelが動きません。 そのためにsail upしますが、webサーバーはcomposerがinstallされていないとエラーを吐いて接続できなくなります。 up -> composer install -> 接続 としたいですが up -> composer install -> down -> up -> 接続 としないと接続できません。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP boolに変換するときにfalseとみなされる値

目的 boolに変換するときにfalseとみなされる値をまとめる 補足 紹介する値はboolに変換するときにfalseとみなされる。したがってif文などの条件式に紹介する値が入るとfalseとして扱われる。 bool変換後にfalseとみなされる値 integer型の0(ゼロ) float型の0.0 float型の-0.0 空の文字列 文字列の0(ゼロ) 要素の数がゼロの配列 NULL 値がセットされていない変数 参考文献 https://www.php.net/manual/ja/control-structures.if.php https://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む