ブックマーク / qiita.com/rana_kualu (18)

  • 【PHP8.4】ついにPHPにプロパティフックが導入される - Qiita

    class HOGE{ public string $tel{ set{ if(!ctype_digit($value)){ throw new ValueError("電話番号は数値のみ"); } if(strlen($value) < 10){ throw new ValueError("電話番号は10文字以上"); } $this->tel = $value; } get{ return '電話番号は' . $this->tel; } } } $hoge = new HOGE(); $hoge->tel = '123456789012'; // OK $hoge->tel = 'abcdefghijkl'; // Uncaught ValueError: 電話番号は数値のみ $hoge->tel = '123'; // Uncaught ValueError: 電話番号は10文字以上

    【PHP8.4】ついにPHPにプロパティフックが導入される - Qiita
  • 【PHP8.4】全角スペースをtrimできるようになるぞー - Qiita

    なんとなくRFCを見ていたらMultibyte for trim function mb_trim, mb_ltrim and mb_rtrimというRFCが投票に入っていました。 というわけで、以下はこのRFCの紹介です。 PHP RFC: Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim Introduction PHPには、マルチバイトのtrim関数がありません。 preg_replace("/^\s+|\s+$/u", '', $string)で概ね想定した挙動になりますが、関数を予め用意しておくことでコードの可読性とわかりやすさを向上させることができるでしょう。 また、トリッキーになりがちなこの処理を標準化することができます。 この機能は多くのPHP開発者にとって有用であり、mbstringモジュールはこれで完成

    【PHP8.4】全角スペースをtrimできるようになるぞー - Qiita
  • 【PHP8.2】PHP8.2がリリースされたので新機能全部やる - Qiita

    PHP8.3 / PHP8.2 / PHP8.1 / PHP8.0 2022/12/08にPHP8.2.0がリリースされました。 大きな新機能については、PHP8.0以降公開されるようになったランディングページで見ることができます。 ここでは、概要だけではなくUPGRADINGに載っている変更点を全部見て回ることにします。 Backward Incompatible Changes 下位互換性のない変更点。 Date DateTime::createFromImmutable() now has a tentative return type of static DateTime::createFromImmutable()の返り値の型がstatic型になりました。 以前はDateTime型でした。 これはphpstanのバグへの対応です。 class CustomDateTimeImmu

    【PHP8.2】PHP8.2がリリースされたので新機能全部やる - Qiita
  • 【PHP8.2】PHP8.2の新機能 - Qiita

    PHP8.3 / PHP8.2 / PHP8.1 / PHP8.0 2022/07/19、PHP8.2がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2022/11/24にPHP8.2.0がリリースされる予定です。 というわけでPHP8.2で実装されるRFCを見てみましょう。 RFC Disjunctive Normal Form Types 賛成25、反対1で受理。 選言標準形です。 UNION型と交差型を同時に使えるようになります。 思う存分型パズルで遊べますね。 // A型、もしくはB型かつC型、もしくはint function hoge( A | (B & C) | int $param){}

    【PHP8.2】PHP8.2の新機能 - Qiita
  • 【PHP9】ついに未定義変数が使えなくなる - Qiita

    PHP9以降、致命的エラーになります。 以下は該当のRFC、Undefined Variable Error Promotionの紹介です。 投票期間は2022/03/14から2022/03/28です。 2022/03/21時点では賛成30反対6の賛成多数であり、ほぼ確実に可決されます。 Undefined Variable Error Promotion Introduction 未定義変数とは、使用する前に値がまだ初期化されていない変数のことです。 未定義変数にアクセスすると、現在はWarning: Undefined variable $varnameの警告E_WARNINGが表示され、その変数値はNULLであるかのように扱われますが、実行が中断されることはありません。 しかし、これは意図しない挙動である可能性が高いでしょう。 この挙動を変更して例外を出すためにカスタムエラーハンドラ

    【PHP9】ついに未定義変数が使えなくなる - Qiita
  • PSR-11 Container interface - Qiita

    PSR一覧 PSR-5 / PSR-6 / PSR-11 / PSR-12 / PSR-14 / PSR-16 アレだよアレ、えーとほらなんだっけ、依存性注入とかいうやつ。 そんなわけでPSR-11 Container Interfaceが2016/12/13現在レビュー中となっているので翻訳してみます。 このURL、ステータスが変わると一緒に変わってしまって不便なんだけどどうにかならんのだろうか。 なお私は英検で3級を取る程度の程度の能力なのでプルリク待ち。 このドキュメントは、依存性注入コンテナのインターフェイスについて解説するよ。 ContainerInterfaceの目的は、フレームワークやライブラリがコンテナから中身のデータ(以降エントリと呼ぶ)をどのように取得するかの扱いを標準化することだよ。 "MUST"とか"MAY"とかの意味合いについてはRFC2119を参照。 このドキュ

    PSR-11 Container interface - Qiita
  • 【PHP8.1】PHP8.1がリリースされたので新機能全部やる - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 2021/11/26にPHP8.1.0がリリースされました。 大きな新機能については、PHP8.0以降公開されるようになったランディングページで見ることができます。 ここでは、概要ではなくUPGRADINGに載っている変更点を全部見て回ることにします。 Backward Incompatible Changes 下位互換性のない変更点。 PHPコア Access to the $GLOBALS array is now subject to a number of restrictions $GLOBALSの内部処理を変更します。 $a = 1; $globals = $GLOBALS; // 値をコピー $globals['a'] = 2; var_dump($a); // PHP8.1 int(1) // PHP8.0 int(2) $

    【PHP8.1】PHP8.1がリリースされたので新機能全部やる - Qiita
  • 【PHP8.1】PHP8.1の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2021/11/26にリリースされました 2021/07/20、PHP8.1がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2021/11/25にPHP8.1.0がリリースされる予定です。 というわけでPHP8.1で実装されるRFCを見てみましょう。 RFC Fibers 賛成50反対14で受理。 Fiberです。 PHPで非同期コードを書けるようになります。 $fiber = new Fiber(function (): void { $value = Fiber::suspend('fiber'); echo "レジュームした。$value: ", $value, "\n"; }); $value = $fiber

    【PHP8.1】PHP8.1の新機能 - Qiita
  • 【PHP8.1】PHPで交差型が使えるようになる - Qiita

    交差型は何かって一言で言うと型のANDです。 PHP8.0で型のORことUNION型が導入されましたが、これに続いてPHP8.1で交差型が導入されることになりました。 これでPHPでも型パズルマウント取れるようになりますね。 ということで以下はPure intersection typesの紹介です。 PHP RFC: Pure intersection types Introduction 交差型とは、型がひとつの制約ではなく、複数の制約を同時に満たすことを必要とする型です。 交差型は、現在のところ言語ネイティブには対応していません。 かわりにphpdocアノテーションを使用したり、型付きプロパティを濫用したりしています。 class Test { private ?Traversable $traversable = null; private ?Countable $countabl

    【PHP8.1】PHPで交差型が使えるようになる - Qiita
  • SJIS-macに変換したはずなのにSJIS-winになる - Qiita

    $utf8Str = "❶❷❸❹❺"; $sjisStr = mb_convert_encoding($utf8Str, 'SJIS-mac'); echo(mb_detect_encoding($sjisStr, ['UTF-8','SJIS-mac', 'SJIS-win', 'SJIS'])); // SJIS-win ← SJIS-macに変換したはずなのに、何故かSJIS-winと判定されてしまいます。 そもそもSJIS-macってなんだよって話ですが、単にMacJapaneseのエイリアスです。 従ってMacJapaneseと書いても同じく、正しく誤判定されます。 そしてコメント欄にThis is a bug in PHP's mbstring extension『mbstringエクステンションのバグじゃよ』という人が現れています。 間違ったコードを書いたときに自分のせいでは

    SJIS-macに変換したはずなのにSJIS-winになる - Qiita
  • 【PHP8.0】PHP8.0の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2020/11/26に リリースされました 。 2020/08/04にPHP8.0がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2020/11/26にPHP8.0がリリースされる予定です。 というわけでPHP8.0で対応することが決まったRFCを見てみましょう。 RFC JIT 賛成50反対2で受理。 PHP8の目玉、JITです。 PHPをネイティブコードにコンパイルし、さらにコンパイルした結果を次のリクエストに使い回すことができます。 速度はOpcacheがオンの状態から平均的に1.3-1.5倍程度、さらにCPUバウンドな処理なら3倍以上という劇的な高速化が見込めます。 Opcache無しからだと、1分かかっていた

    【PHP8.0】PHP8.0の新機能 - Qiita
  • 【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita

    $user = null; echo $user->address->country ?? ''; PHPのプロパティは元よりnull安全なので、存在しないプロパティだろうがnullだろうがプリミティブ型だろうがいきなりプロパティを取り出せます。 取れない場合はE_NOTICEが発生しますが、??を使えば黙殺できます。 しかしメソッドはだめです。 echo $user->getAddress()->getCountry() ?? ''; // Fatal error: Call to a member function getAddress() // 1 if (method_exists($user, 'getAddress')) { if (method_exists($user->getAddress(), 'getCountry')) { echo $user->getAddres

    【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita
  • 【PHP8.0】PHPでアトリビュート/アノテーション/デコレータが書けるようになる - Qiita

    Attributes v2というRFCが投票中です。 投票期間は2020/05/04まで、投票者の2/3の賛成で受理されます。 2020/04/27時点では賛成48反対1で、ほぼ間違いなく可決されます。 Attributes v2 Introduction このRFCは、クラス/プロパティ/関数/メソッド/引数/定数の宣言に、構造化されたアトリビュートをメタデータとして記述できるようにする提案です。 アトリビュートは、コードの宣言に直接設定ディレクティブを埋め込むことで定義されます。 同じような概念としてJavaのAnnotation、C#/C++/Rust/HackにおけるAttribute、Python/JavascriptにおけるDecoratorが存在します。 これまで、PHPではこのようなメタデータとしては非構造的であるdoc-commentsしか存在しませんでした。 しかしdo

    【PHP8.0】PHPでアトリビュート/アノテーション/デコレータが書けるようになる - Qiita
  • 【PHP7.4】PHP7.4がリリースされたので新機能全部やる - Qiita

    PHP8.1 / PHP8.0 / PHP7.4 2019/11/28にPHP7.4.0がリリースされました。 ということで、ここではドキュメント化されている新機能や変更点を片端から試してみます。 これら以外にもドキュメント化するほどでもない軽微な変更が多々入っているはずですし、単なるバグ修正も山ほどあるのですが、今回はそのあたりには触れません。 把握しきれていませんしね。 インストール 古いXAMPPが入っていたらディレクトリまるごと削除。 最新のXAMPPをインストール。 WindowsPHPからVC15 x64 Thread Safeをダウンロード。 解凍したディレクトリをpath\to\xampp\phpにまるごと上書きコピペ。 php.ini-developmentをphp.iniにコピー。 php.iniのextension_dirをエクステンションが入ってるディレクトリへの

    【PHP7.4】PHP7.4がリリースされたので新機能全部やる - Qiita
  • 【PHP8.0】PHPでunion型が使えるようになる - Qiita

    Union Types 2.0というRFCが投票中です。 提案者はまたまたのNikita。 2019/10/25開始、2019/11/08終了で、受理には2/3+1の賛成が必要です。 2019/11/04時点で賛成55反対5であり、ほぼ導入確定です。 PHPのunion型って何かというと、TypeScriptのunion型とだいたい同じです。 int|string $aと書いたら$aはint型もしくはstring型ですよ、ということです。 ちなみに別途RFCをGitHubで管理しようという実験が進行中で、このRFCの詳細はGitHub上に存在します。 このRFCはまだNikitaの個人GitHub上にしかないのですが、決まりになったらPHP公式に移動になると思います。 まあGitHubのほうが管理とか更新とか楽ですからね。 ただGitHubはURLがすぐ404になるのだけはどうにかしてほ

    【PHP8.0】PHPでunion型が使えるようになる - Qiita
  • 【PHP7.4】ついにPHPにプロパティ型指定がやってくる - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    【PHP7.4】ついにPHPにプロパティ型指定がやってくる - Qiita
  • 死んだCSSを見つける方法 - Qiita

    使われてないCSSであればツールで見つけられますが、そうではなく、"実質的に"使われてないCSSを見つけるにはどうすればよいでしょうか。 という問題にスマートな解決方法を記載している記事を見つけたので訳してみます。 以下はFinding Dead CSSの日語訳です。 Finding Dead CSS 私が今週開いていたパフォーマンスワークショップで、Webサイト上で死んだCSSを見つけるテクニックが頭をよぎりました。 今、故意に『未使用CSS ( unused CSS ) 』ではなく『死んだCSS ( dead CSS ) 』というフレーズを使いましたが、これは以下のようなシナリオを想定して使いました。 数十人規模の多数のチームが開発している、数十万行のコードを含む、長期にわたって運用されている大規模なプロジェクトがあるとしましょう。 そこには既に使われていないCSSがあるだけではなく

    死んだCSSを見つける方法 - Qiita
    kumokaji
    kumokaji 2018/06/18
    すごい力技で乾いた笑いが出た
  • PHP7.3.0α1の新機能 - Qiita

    PHP7.3.0 / PHP7.3.0α1 / PHP7.2 / PHP7.1 2018/06/07にPHP7.3.0 alpha1がリリースされました。 リリースノートはいつものようにFixed bugで埋まってますが、幾つかRFCで決定した新機能が取り込まれてるので見てみます。 RFC Flexible Heredoc and Nowdoc Syntaxes ヒアドキュメントとnowdocが微妙に使いづらかったのが改善されます。

    PHP7.3.0α1の新機能 - Qiita
  • 1