正規表現のメタ文字とエスケープシーケンスについておさらい。 メタ文字 ^: (ハット記号) 検索対象(複数行モードでは行)の始まりを言明 メタ文字 $: (ドル記号) 検索対象の終わりあるいは終端の改行文字の前(複数行モードでは行の終わり)を言明 エスケープシーケンス \A: 検索対象文字列の始端(複数行モードとは独立) エスケープシーケンス \z: 検索対象文字列の終端(複数行モードとは独立) 言明 \A, \Z, \z は、(アンカー で説明する)ハット記号やドル記号とは 異なり、オプション設定によらず、文字列の始端または終端だけに マッチします。これらの言明は、PCRE_MULTILINE および PCRE_DOLLAR_ENDONLY オプションの影響を受けません。 \Z と \z との違いは、 \Z は文字列の末尾の改行の前の位置および文字列の 終端にマッチするのに対し、\z は
はじめに php7ccで検出されない問題とは ハマった点1: count関数の挙動変更 ハマった点2: $array[] で値を追加しようとして壊れる 苦労した点: mysql関数の置き換え 苦労した点2: PHPUnitのバージョンも上げないといけない 逆に嬉しかった点: 型アノテーションの強化 まとめ はじめに この記事は PHPアドベントカレンダー 6日目の記事です。 皆さん、PHP 5.6のセキュリティサポートは2018年12月いっぱいで終了です。つまり、このアドベントカレンダーのカウントダウンがPHP 5.6終了へのカウントダウンなわけです。 PHP5.6からPHP7系に移行しようとしている皆さんはきっとphp7ccを使ってコードのチェックをしているかと思いますが、php7ccでは検出されず、実際に動かしてみないと気づかない問題もあります。 今回はそういったハマった点や苦労した点
(Last Updated On: 2018年12月2日) PHP 7.3が今月(2018/12)リリース予定です。新機能や機能変更は小振りですが、結構多くの追加/変更があります。ソースコード中のUPGRADINGに変更点は記載されています。ここでは独断と偏見で選んだ重要度が高い追加/変更を紹介します。 ※ PHP 7.3.0 RC6時点のUPGRADINGから紹介します。 記載していない変更の方が多いです。詳しくはリリース版のUPGRADINGを参照してください。 エラー処理の強化 バンドルされているモジュールのエラー処理はお世辞にも理想的と言える処理ではなかったモノがあります。これらのエラー処理が改善されました。エラーの発生の仕方やエラー発生後の動作が異なることになります。これでは困る事になるかも?と思うかも知れませんが、おかしな動作を起こすデータやコード、はそもそも問題の原因です。問
ユーザ入力の文字列が整数かどうかを検証するにあたって、is_numericやctype_digitは適切ではなく、アプリケーションの仕様によってはfilter_varも妥当でない場合がある。CakePHP3のバリデーションライブラリについても問題点があることが明らかになった。なお、Symfonyはis_intやis_numeric、ctype_digitなどに移譲される実装になっており、Laravelはfilter_varに依存しているため事情は同様である。 結論としては、filter_varがアプリケーションの仕様と合致する場合はそれを使い、そうでない場合は正規表現で検証するか組み合わせるほうが良い。CakePHP3のバリデーションライブラリを使うときも同様である。ちなみに、文字列に対してis_intやintvalをかけることは何の検証にもならないので注意されたし。 参考までにis_nu
gistfile1.php �U��U p����U <?php function encrypt_mcrypt($msg, $key, $iv = null) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); if (!$iv) { $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); } $pad = $iv_size - (strlen($msg) % $iv_size); $msg .= str_repeat(chr($pad), $pad); $encryptedMessage = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $msg, MCRYPT_MODE_CBC, $iv); return base64_
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ##追記 1.一意な識別子を生成するnextIdentity()メソッドの実装を追記しました 2.ReservationServiceクラスを修正しました (リファクタリング、Customerクラス追加) 3.続編では無いですが、その②を書きました。 PHPでDDD実装事例その②リポジトリ&ファクトリで永続化・生成処理をカプセル化(Laravel)(図あり) #背景 自分が運営しているハウススタジオの予約受付業務の自動化システムを、今学習しているDDD風に設計して、YYPHPにてコードレビューしてもらったので、 ・前提となる業務の内容
果物リン @FruitRiin 「あえてPHPerにすすめるVue.js入門」で登壇したリンちゃんです! speakerdeck.com/fruitriin/aete… ライブコーディング部分の動画がまだ出来ていないので後ほど差し替えますが、登壇資料です! #phpkansai リンク Speaker Deck あえてPHPerにすすめるVue.js PHPConference 関西2018 昔はあなたもPHPでフロントのコードUX作ってませんでした? 「UX作ろう!」「フロントエンド興味ある」「jQueryはちょっと……」そんなあたなたにLaravel先生も推してるVue.js! Vue.jsってこんなものなんですよ!Vue.jsはいいぞ! 1 user
runkit とは PHPの関数やクラスのメソッドの挙動を変更することを目的としたPHP拡張です。(pecl で配布されています) pecl runkit プロダクションコードで使うことはないでしょうが、テストを行う際に、元のコードの挙動を少しだけ変更することによってテストする範囲を限定するといった使い方があります。 テストではPHPUnitの 「テストダブル」 をうまく使えば、runkit を乱用する必要はないのですが、以下の様な場合には runkit の出番となります。 PHPの組み込み関数の挙動を変えたい staticメソッドの挙動を変えたい staticメソッドをモックするライブラリである StatickMock は内部的に runkit を利用しています runkit を使ったコードは以下のような感じになります。 Example クラスにもともとあった foo というメソッドの挙
at 全然野菜(PHPCon Fukuoka 2018 非公式 前々夜祭) 20min talk https://pepabo.connpass.com/event/85144/
6月16日に開催されたPHPカンファレンス福岡2018で、『SOLIDの原則ってどんなふうに使うの? オープン・クローズドの原則編(拡大版)』というトークをしました。 phpcon.fukuoka.jp スライドは以下です。スライドだけでも十分内容が伝わるように作っていますが、しゃべりでしか言っていないこともたくさんありますので、動画がアップロードされたらそちらを観ていただきたいです。 このトークにかける思い 私はプログラマになりたての頃から、ソフトウェアの設計が好きでした。これまで独学だったり師匠や先輩方からのご指導だったりで揉まれながら、さまざまなことを学んできました。そんな学びの結果、私に身についたといいますか、師匠や先輩方から授かったという方がよいのかもしれませんが、ソフトウェアやコードの設計に対する「目」というものがあります。この「目」は、ソフトウェアのソースコードを見た時に、そ
カルテット開発部の後藤です。 弊社ではアプリケーションの開発にSymfonyを使っており、ロギングはSymfonyに標準でバンドルされているMonologを使っています。 使っている期間はそこそこ長いのですが、ログのための設定を記述する頻度が少ないことや、どうもMonologの設定の概念がつかめていないためか、いつもいろいろ迷いながら設定しています。 いつも迷って困るので、今後のために概念などを整理しました。ついでに記事にして公開します。 Monologの基礎概念 Monologはロギングのためのライブラリですが、物理的なログ出力機構に関する詳細をアプリケーションから意識することなく透過的にロギングできるように、多少抽象化されています。 Monolog内に登場する概念と役割は、次のようになっています。 ロガー アプリケーションから利用するエントリポイントオブジェクトです。PSR-3のLog
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く