タグ

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

  • 【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
    k-holy
    k-holy 2024/05/22
    これはインパクトでかいな…多くの場合で__get(), __set()が不要になる?
  • 【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
    k-holy
    k-holy 2024/03/25
    合理的な変更だと思うけど、引数デフォルト値のNULLは変数初期化のノリで多用してたから、影響は大きそう…PHP7.1以降で問題なしなら、すぐにでも対応するんだけど。php-cs-fixerで一括置換できるなら作業自体は楽かな。
  • PHP8.0がリリースされたので新機能全部やる - Qiita

    PHP8.1 / PHP8.0 / PHP7.4 2020/11/26にPHP8.0.0がリリースされました。 ということで、UPGRADINGに載っている機能や変更点をだいたい全部見て回ることにします。 Backward Incompatible Changes 後方互換性のない変更。 なお、ここで削除される機能の多くは何年も前から公知されています。 PHPコア match is now a reserved keyword. matchが予約語になりました。 match構文の導入に伴う措置です。 function match(){} // PHP8.0 Parse error: syntax error, unexpected token "match", expecting "(" // PHP7.4 エラーは起こらない

    PHP8.0がリリースされたので新機能全部やる - Qiita
    k-holy
    k-holy 2022/04/08
  • Composer2.0ついにリリース! - Qiita

    Original article:https://blog.packagist.com/composer-2-0-is-now-available/ もはやPHPには欠かせないパッケージマネージャであるComposerですが、2020/10/24にComposer2.0.0がリリースされました。 2012年のリリース以来初めてのメジャーバージョンアップということで、多くの改善や新機能が盛り込まれており、そして互換のない変更点もわずかに存在します。 以下は公式でもアナウンスされている、Jordi Boggianoによる紹介記事Composer 2.0 is now available!の日語訳です。 Composer 2.0 is now available! 1/ What's new? 何が新しくなったの? 変更点や改善点は非常に多岐にわたるので、全てを知りたい場合は変更履歴を確認して

    Composer2.0ついにリリース! - Qiita
  • 【PHP8.0】非厳密な比較演算子`==`の挙動が今さら変更になる - Qiita

    結果は順にtrue、true、falseです。 これがPHP7までの非厳密な比較(等価)演算子だったわけですが、まあおかしいよねってことで、この挙動がPHP8.0で変更になることになりました。 よもや今さら基中の基である比較演算子の動作を弄ってくるとは思わなかったぞ。 以下はSaner string to number comparisonsの日語訳です。 PHP RFC: Saner string to number comparisons Introduction ==やその他の非厳密な比較演算子を用いた文字列と数値の比較は、現在は、文字列を数値にキャストし、その後整数か浮動小数の比較を行っています。 この結果、多数の不可解な結果が得られますが、中でも注目すべきは0 == "foobar"がtrueになることです。 このRFCでは、文字列が実際に数値型文字列である場合にのみ数値型

    【PHP8.0】非厳密な比較演算子`==`の挙動が今さら変更になる - Qiita
    k-holy
    k-holy 2020/08/04
    まともなコードであれば影響なし、そうでないコードで不具合が放置されたまま偶然動いていた場合は…ってところか。個人的にはswitch文が使いやすくなる点で歓迎だけども、はてさて。
  • 【PHP8.0】PHPにオブジェクト初期化子が導入される - Qiita

    これまで何度も塩漬けにされたり却下されたりしていたオブジェクト初期化子ですが、ついにPHP8.0で導入されることになりました。 オブジェクト初期化子が何かというとこれです。 これはオブジェクト初期化子でいいのか? 日語で何と表すのか適切な単語が思いつかなかったのでとりあえずオブジェクト初期化子としておきます。 愚直に訳すと"コンストラクタ引数昇格"ですが、そんな単語は無いうえに型昇格と紛らわしいです。 引数プロパティ宣言もパラメータプロパティ宣言もほぼ使われてないし何と表現すればいいのだろう。 きっと誰かが適切な語をプルリクしてくれるはず。 以下は該当のRFC、PHP RFC: Constructor Property Promotionの日語訳です。 PHP RFC: Constructor Property Promotion Introduction PHPでは現在のところ、オブ

    【PHP8.0】PHPにオブジェクト初期化子が導入される - Qiita
    k-holy
    k-holy 2020/06/02
    これは大賛成
  • 【PHP7.4】ついにPHPにプロパティ型指定がやってくる - Qiita

    Typed Properties 2.0というRFCが投票フェーズに入ったのですが、2018/09/13時点で賛成48反対0となっていて、ほぼ決まりの状態です。 Typed Properties 2.0 どういうRFCなのかというと、これです。 class User { public int $id; public string $name; public function __construct(int $id, string $name) { $this->id = $id; $this->name = $name; } } class Example { // 対象型はvoidとcallable以外全て public int $scalarType; protected ClassName $classType; private ?ClassName $nullableClassTy

    【PHP7.4】ついにPHPにプロパティ型指定がやってくる - Qiita
    k-holy
    k-holy 2018/09/14
    セッターメソッドで例外スローしなくて良くなる!嬉しいけどウチの環境で実戦投入できるのはいつになるやら…
  • PHP7.1以降なおったバグたち - Qiita

    2016/12/01に出たPHP7.1.0以降、2017/04/13に出た7.1.4までに修正されたバグのうち、目立ったものを取り出してみた。 メモリリークとかSegfaultとか長すぎるやつとかは確かめるのが面倒なのでスルー。 array_key_exists fails on arrays created by get_object_vars オブジェクトから配列にしたらarray_key_existsでキーが見つからないという問題。 $json = '{"2":1}'; $obj = json_decode($json); $arr = get_object_vars($obj); $key = array_key_exists('2', $arr); // falseになる これは$arrが[2=>1]ではなく["2"=>1]になっているせいで発生する問題です。 元々7.2でなおす

    PHP7.1以降なおったバグたち - Qiita
  • PHP PSR一覧 2017年版 - Qiita

    PHP Standards Recommendations 2017/01/20現在、18個のPSRが存在します。 内訳は8個がACCEPTED、1個がREVIEW、8個がDRAFT、1個がDEPRECATEDとなっています。 以下の日付は決定した日ではなく、変更がcommitされた日です。 ACCEPTED PSR-1 Basic Coding Standard 2012/03/24に提出、2012/06/05に受理。 最低限準拠すべき基的なコーディング規約を規定している。 BOM無しUTF-8にしろとか勝手にechoやini_setするなとかレベルなので当に超絶基礎的。 PSR-2 Coding Style Guide 2012/05/04に提出、2012/06/05に受理。 いわゆるコーディング規約、およびコーディングスタイル規約。 後継のPSR-12が提出中。 PSR-3 Lo

    PHP PSR一覧 2017年版 - Qiita
    k-holy
    k-holy 2017/03/08
  • PHP7.2の新機能 - Qiita

    PHP7.3.0 / PHP7.3.0α1 / PHP7.2 / PHP7.1 つい先日PHP7.1.0が出たばっかりですが、早くもPHP7.2に取り込まれる機能が幾つか決まってるみたいなので見てみます。 Convert numeric keys in object/array casts 賛成21/反対1で受理。 配列のキーに数値型文字列を入れた場合、自動的に数値になります。

    PHP7.2の新機能 - Qiita
    k-holy
    k-holy 2016/12/20
    “PDOStatement::activeQueryString()”これ助かるわ
  • 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
    k-holy
    k-holy 2016/12/14
    コンテナ同士のデリゲートによる連携が考慮されてるのね。Phalconは乗ってくれなさそうな気がするけど…PSR-3対応もなくなったみたいだし
  • 却下されたPHP RFCを見てみる その2 - Qiita

    その1 / その2 / その3 Declined RFC 続いた。 以下は全てPHP7.xでの採用を目指し、そして敗れた兵どもの跡地です。 ''var'' Deprecation 賛成31/反対23で却下。 いいかげんvarとか削除しようぜ、という提案。 PHP7.1でE_DEPRECATE、PHP8にて削除、というロードマップです。 Packagistの上位10000パッケージを調査したところ未だvar使ってるのは4~8%くらいしかいないぞ、という調査まで行ってご苦労ではありましたが、驚いたことに却下されました。 今時varとか使ってるソースなんぞ、そもそもPHP7では動かんだろうに。 Precise Session Management 賛成15/反対11で却下。 現在のセッション管理は色々と問題があるので、もっとどうにかしようという提案。 // Cookieの有効期限 ini_set

    却下されたPHP RFCを見てみる その2 - Qiita
    k-holy
    k-holy 2016/08/22
    “Precise Session Management”これはと思ったらやはり大垣さんだった
  • PHP7.1β1の新機能 - Qiita

    PHP7.1.0の新機能 / PHP7.1β1の新機能 / PHP7.1α1の新機能 / PHP7.0.0α1 / PHP5.6 PHP7.1はどういうわけか新機能をえらい盛り盛りしてきています。 前PHP7.1の新機能というのを書きましたが、その記事はα1時点のものでした。 α2、α3、β1でさらに色々追加されていたので見てみます。 Replace "Missing argument" warning with "Too few arguments" exception function foo($a){} foo(); // Fatal error: Uncaught Error: Too few arguments to function foo() foo(null); // OK デフォルト値の無い引数を省略した場合、これまではE_WARNINGが出るだけでしたが、今後はErro

    PHP7.1β1の新機能 - Qiita
    k-holy
    k-holy 2016/07/28
    iterable便利そう。Mcrypt過去プロジェクトがヤバイ。Missing argumentも他社から引き継いだコードには潜んでそうで怖いな。結構影響大きい。
  • PHP7.1α1の新機能 - Qiita

    PHP7.1.0の新機能 / PHP7.1β1の新機能 / PHP7.1α1の新機能 / PHP7.1.0α1インストール / PHP7.0.0α1 / PHP5.6 PHP7.1に導入決定・実装完了したRFCを見てみます。 Warn about invalid strings in arithmetic 非数値文字列の数値演算でエラーが発生する。 $x = 1 + 'a'; // Warning: A non-numeric string encountered $y = 1 + '1a'; // Notice: A non well formed numeric string encountered $z = 1 + '1'; // 大丈夫っぽい $x = (1 + (int)'a'); // 回避手段1 $x = @(1 + 'a'); // 回避手段2 数値として解釈可能であればE

    PHP7.1α1の新機能 - Qiita
    k-holy
    k-holy 2016/05/16
    “Catching Multiple Exception Types”はinstanceofとか書かなくて良くなる、嬉しい
  • PHP5.6の新機能紹介 - Qiita

    Constant scalar expressions オブジェクト定数に表現が使えるようになりました。 <?php const A = 1; class HOGE{ const B = A + 100; // 101 const C = self::B + 10; // 111 const D = intval(1); // Parse error: syntax error } ただし変数/メソッド呼び出しはできない模様。 どうせならそこまで対応してほしかったところ。 Variadic functions via ... 関数の引数に可変長引数が使えるようになりました。 これまでも可変長引数はfunc_get_args()で使えましたが、こいつは引数に明記されないからわかりにくいし、IDEにも捉えてもらえませんでした。

    PHP5.6の新機能紹介 - Qiita
    k-holy
    k-holy 2014/05/13
    関数の可変長引数とGMPの演算子オーバーロード嬉しい。実務で使わせてもらえるのは何年先かって感じですが…
  • PHPでナウいカレンダー - Qiita

    PHPでカレンダーとか死ぬほどよくありますが、mktime()とか使って手動で作ってるタイプばっかりで、DateTimeを使ったカレンダーが見当たらなかったので作ってみる。 <?php // かれんだー class Calendar{ private $datetime; public function getDatetime(){ return clone $this->datetime; } /** * コンストラクタ * @param int 年 * @param int 月 * @param int 日 */ public function __construct($year = NULL, $month = NULL, $day = NULL){ // デフォルト $default = new DateTime(); if($year ===NULL){ $year = $def

    PHPでナウいカレンダー - Qiita
    k-holy
    k-holy 2013/12/25
    これはナウい
  • 1