Webエンジニアの日常とリーグオブレジェンド

Webエンジニアとして働いている猫のブログ。EmacsとMySQLとリーグオブレジェンド(LoL)が好物。主に技術的な記事かLoLの記事を書く。

PHP

無料の Open LiteSpeed で .htaccess を使う

Laravel/LumenをLiteSpeedで動かす 無料の Open LiteSpeed で .htaccess を読めるのか どうしたのか rewrite enable 1 rulesの中身 設定が適用されているか確認する まとめ Laravel/LumenをLiteSpeedで動かす Laravel (や Lumen )を LiteSpeed 上で動かし…

【PHP】Lumen で Migration

Lumen artisanコマンドを叩く Migration ファイルを編集 Migration コマンドを叩く Eloquent を有効に Lumen Laravel を軽くしたと言われる Lumen で Migration をしてみます artisanコマンドを叩く Laravel と同じっぽいので Laravel の Eloquent のドキュ…

PHPEarth の Docker イメージに PDO をインストールする

PHPEarth とは PHPEarth のイメージにはPDOが入っていない Dockerfile で確認 ドキュメントを確認 Dockerfile で追加してみる 動かない理由を調査する php -m で見てみる php.ini を見る イメージを削除してやりなおしてみる 結論 PHPEarth とは PHPの色々な…

Docker phpearth/php:7.3-litespeed の admin のパスワードを設定する

/etc/litespeed/admin/htpasswd がユーザー名とパスワードの設定になっている。 www.luft.co.jp などのツールをつかってできたhtpasswdファイルをそこに配置すれば、そのユーザー名とパスワードでログインできるようになる。

Laravelより早いLumenとLiteSpeedを組み合わせてDocker上で動かす

はじめに Lumen Lumen Lumenのアプリを作成する Docker LiteSpeed LiteSpeed とは Docker の LiteSpeed イメージ Docker LiteSpeed ファイル構造 Lumen のための設定 まとめ はじめに この記事では、Docker上でLiteSpeedを使ってLumenを動かすことを目標にし…

PHPでサクッとWebスクレイピングするならphpQuery

composer で phpQuery をインストールする htmlをパースする まとめ composer で phpQuery をインストールする Composer が入っている前提とします。 composer require electrolinux/phpquery htmlをパースする Guzzleでリクエストをして、返ってきたHTMLを…

PHP の Guzzle を使う時にもうググらない! GuzzleHttp の RequestOptions 定数を使う

Guzzleについて Guzzle という PHP の HTTP クライアントがある。 github.com このライブラリ、めちゃめちゃ使われているし、基本的には使い勝手も良い。僕も PHP で Web API を叩く時などには基本的にはこれを使う。 違和感 しかしある時に違和感に気づく。…

PHPUnit 5 から PHPUnit 6 するときにハマった点とこれから

はじめに PHPUnit 6 にするきっかけ 地道な修正作業 クラスの namespace mt_rand と mt_srand グローバル変数の扱い non-numeric test phpunit6 ochiru アサーションをしていないテスト PHPUnit 6 にしてよかったこと そして時代は はじめに この記事は PHP …

海外アクセスを弾くフィルタと AWS Elastic IP の罠

はじめに結論から ハマった経緯 エラー内容の確認と原因 エラーの原因 エラーの特定フロー まとめ はじめに結論から 先日、AWS の Elastic IP を使っていてハマった。 Elastic IP から割り当てられる IP は、東京リージョンで発行したものだとしても日本の I…

AWSのEC2でとりあえずPHP Laravelを動かす

はじめに 環境 PHP, nginx, php-fpm のインストール PHP と php-fpm を Amazon Linux にインストールする nginx を Amaxon Linux にインストールする 各種設定 nginx の設定 server_name root fastcgi_pass php-fpm の設定 ユーザーと権限 nginx から php-fp…

PHP Laravel 標準の AuthenticatesUsers によるログインの処理を見てみる

環境 はじめに AuthenticatesUsers::login の中でやっていること validateLogin hasTooManyLoginAttempts まわり ThrottlesLogins::hasTooManyLoginAttempts attemptLogin それ以降の処理 環境 PHP 7.3 Laravel 5.8 はじめに Laravel では標準で認証の機能が…

PHP, Laravelで開発する時に役に立ったページ

はじめに 個人的に役に立ったページです 執筆時のLaravelの最新版は 5.8 です 基本は公式ドキュメントが大事 随時更新していきます Homestead Laravel Homestead 5.8 Laravel HomesteadでPHP(Laravel)アプリケーションが動作しなくなった時の対処法 Model, M…

PHPでstringをintにキャストする場合のバリデーションについて

PHP

環境 はじめに is_numeric ctype_digit 結論: filter_var 環境 利用しているバージョンは PHP 7.2 ですが、結構幅広いバージョンに通じる話だと思う。 はじめに PHPのキャストがガバガバなのはみなさんご存知だろう。 $ php -r "var_dump((int)'ホゲーーー')…

【PHP】LaravelでServiceProviderでInterfaceに実装を注入したりstringを注入する方法【DI】

Interfaceを利用する意義 Laravelでどうやって注入するの? サービスプロバイダとは register メソッドでDIの設定を書く Interfaceへの実装注入以外の用途でも使える まとめ Interfaceを利用する意義 LaravelはDIを勝手にいい感じにしてくれます。例えばこう…

はてなブログでPHPのコードを書いたときのシンタックスハイライトについて

シンタックスハイライト はてなブログにはシンタックスハイライト(見やすいようにプログラムのコードに色をつけてくれる機能)がある。 シンタックスハイライトなし

Vagrantを使ってPHP Laravel開発(PHP 7.3, Laravel 5.8 macOS)

はじめに PHPのWebフレームワークといえばLaravelである。今PHPでWebアプリケーションを開発するならLaravelを使っておけば間違い無い。 LaravelにはHomesteadという開発環境が用意されていて、これを使えばすぐにWebアプリを作成できる。 環境 今回はMacで…

【PHP】Mockeryでクラスとインタフェースを継承したクラスをモックしたり、複数のインタフェースを実装したクラスをモックする

はじめに PHPのGuzzleHttp *1 を利用し、以下のようなコードを書いた。 guzzleClient は コンストラクタDIなどを利用して // $this->guzzleClinet = new \GuzzleHttp\Client(); を差し込むようにする $response = $this->guzzleClient->post($url); } catch …

PHP 7.4で追加される ??= 演算子はそんなに使えないんじゃないだろうか

概要 ??= 演算子とは この演算子が使えない理由 関係する演算子の歴史 三項演算子 a ? b : c 二項演算子 ?: 演算子 ?? まとめ 参考 概要 PHP 7.4 から ??= 演算子が追加されることが確定しました。 github.com ??= 演算子とは $var ??= <value> は、 $var が null </value>…

PHPでのWebサービス新規開発メモ

これはなに? PHPで新規開発する際にどういう構成だったりフレームワークにしていくかなというメモです。 PHPの特徴 ゆるふわで書けるので開発スピードが早い。 学習コストが低く直感的なので誰でもすぐに書ける。 利用者が多くライブラリが充実している。 P…

PHP7.4からクラスのプロパティに型がかけるようになる

PHP

はじめに 機能の概要 v1 との違い 対応している型 callableについて strict_types 継承 将来の話: readonly 値の初期化 参照渡し さいごに 参考 はじめに PHP 7.4の新機能としてクラスのプロパティに型がかけるようになる機能が提案されていました。これはTy…

PHPのSlim Framework 3.11 がリリースされ、 StatusCodeクラスが追加されていた

はじめに 2018年9月にSlimの3.11がリリースされました。私がslimフレームワークを採用して開発を始めた時のバージョンは3.9.2でした。3.9.2のリリースが2017年の11月、3.10.0が2018年の4月。3.9.2から2回のリリースがありました。 3.10.0の変更 3.10.0の変更…

Mockeryでモックしようとしたときに Mockery_XXX::__call($method, $args) should be compatible with ... と言われる 2

前回のあらすじ 以下の記事の続きです。 www.utakata.work FluentPDO *1 というライブラリのSelectQueryメソッドをMockeryでMockしようとすると、Declaration of Mockery_3_SelectQuery::__call($method, $args) should be compatible with CommonQuery::__c…

Mockeryでモックしようとしたときに Mockery_XXX::__call($method, $args) should be compatible with ... と言われる

はじめに MockeryとFluentPDOの実装を追ってみる。 どうするか はじめに PHPのモックフレームワーク「Mockery」を利用してクラスをモックしようとした際に以下のエラーが出た。 Declaration of Mockery_3_SelectQuery::__call($method, $args) should be com…

PHPで新しくAPIサーバーを建てるまで - 開発のススメ方や利用している技術スタックなど

はじめに 新しくAPIサーバーを建てるまでの話 新サービスを建てるにあたり考えなければいけないこと 開発を進めるにあたり 言語・フレームワーク・ミドルウェア選定 フレームワークどうするか GraphQLを採用するか、JSONのREST APIにするか サーバー構成をど…

PHPの面白い挙動や細かい仕様?について その1

php

はじめに PHPのバージョン empty(false) は true is_numericはfloatでもtrue $datetime->format の t まとめ はじめに PHP アドベントカレンダー が結構空いているので突貫で記事を書いています。 以前、以下のような記事を書きました。 www.utakata.work ま…

PHPでGraphQLサーバーを建ててみる

はじめに この記事は GraphQL Advent Calendar 2018 - Qiita の4日目の記事です。 昨日はgipcompanyさんのLet's Paginate! - GraphQLでページネーションをやってみよう!でした。 PHPでGraphQL GraphQLが話題になり始めたぐらいの時に、「GraphQL便利そうだ…

PHP7の例外(Exception)の関係、正しく例外を使いましょう。

Thorowable Error Exception RuntimeException LogicException まとめ PHP7の例外のうちよく使う例外と構造は以下の通りです。 Thorwable Error Exception RuntimeException LogicException もっと詳細な図は以下の記事を見るとわかりやすいです。 qiita.com…

PHP Slim Framework を使いこなすための仕様詳細 ※順次追記していきます

はじめに バージョン 参考 Request 継承関係 Psr\Http\Message\MessageInterface と Psr\Http\Message\ServerRequestInterface Requestクラスで定義されているHTTP Method Request::getParam($key, $default = null) Request::getMethod() はじめに Slim Fra…

PHPのモックフレームワークMockeryでprotectedメソッドをモックする

PHPのモックフレームワークでprotectedメソッドをモックしたくなる場合があります。例えば、 database = $database; } public function save($title, $description) { $createdAt = $this->now(); $database->store($title, $…

PHPのcallableとその呼び方とクラスプロパティについて

先日、こんな事件がありました。 どういうことなのか もっとわかりやすく 何が間違いなの? 具体的に動くコードで見てみる わかりましたか? 先日、こんな事件がありました。 func; $func(); // これ以降 $func は使われていない } } このようなコードがあり…