タグ

解説とPHPに関するiwwのブックマーク (36)

  • 単体テストを書かない技術 #phpcon_odawara

    PHPカンファレンス小田原2024での発表資料です https://fortee.jp/phpconodawara-2024/proposal/4d39c7ef-058c-4648-b1d7-5510497e0d81

    単体テストを書かない技術 #phpcon_odawara
  • 【PHP8.0】PHP8で警告のエラーレベルが軒並み厳しくなる - Qiita

    多くの警告について、PHP8.0でエラーレベルが変更されます。 これはReclassifying engine warningsというRFCで受理されたものです。 提案者はいつものNikita。 影響の大きい未定義変数アクセスについては個別に紹介しましたが、ここではそこで紹介しなかった細かい警告について見ていきます。 これまでE_NOTICEだった警告の一部がE_WARNINGに、これまでE_WARNINGだった警告の一部が例外になります。 E_WARNINGを抑制するような書き方をしている場合、PHP8では動かなくなる可能性が高いので気をつけましょう。 現在E_NOTICE以下であればいきなり動かなくなることはありませんが、そもそも抑制する書き方がよくないので、なるべく修正した方がよいでしょう。 エラーレベルの変更がない警告も並んでいるので、もしかしたら全警告が列挙されてるのか?と思った

    【PHP8.0】PHP8で警告のエラーレベルが軒並み厳しくなる - Qiita
  • PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記

    PHPPythonRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 稿では3言語の連想配列の従来実

    PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記
  • 2018年のPHPDoc事情とPSR-5 - Qiita

    PHPDocとは、クラスや関数などのブロックに記述できるDocComment内に記述する書式の通称です。この書式の情報源として時折PSR-5が参照されることがあるので簡単に状況をまとめます。 TL;DR PSR-5の標準化ステータスは昨年10月にABANDONED (放棄・議論停滞)になりました 2018年9月26日にPSR-5とPSR-19が分割され、ともにDRAFT状態に入りました PHPDocを型注釈として利用する各処理系の実装にはばらつきがあり、PSR-5とは相違点があります PhpStormは現在のところ(2018.1 EAP)PSR-5と互換性がありません 特にチーム開発では、対応する型記述の書式について注意が必要です PhpStormに配慮して書く場合、phpDocumentorの仕様を参照する方が安全です PHPDoc リファレンス — phpDocumentor この記事

    2018年のPHPDoc事情とPSR-5 - Qiita
    iww
    iww 2020/04/08
    『PhpStormは現在のところ(2018.1 EAP)PSR-5と互換性がありません』 『PhpStormに配慮して書く場合、phpDocumentorの仕様を参照する方が安全です』
  • [PHP]readfileは巨大ファイルを扱える | なうびるどいんぐ

    「例えば、PHPを避ける」、もちろん間違った考え方なんだけど、この記事を書いた人がそう言いたくなるのも少し理解出来る PHP、いい加減でもいい加減に動いてくれて、非プログラマでもとりあえずそれっぽい感じに動く。 お陰様でネット上には間違った情報だらけ、今回はちょっと目に付いた「readfile()」と言う関数の間違いを書いてみる。 悲劇のreadfile 「PHP readfile」でググると結構良いランクの所に「メモリに溜め込んで使えない」だの書かれてあって可哀想に思う、readfileの事が。 それとは別に「echo file_get_contents("hoge");」をサンプルとして載せているサイトも少なくないと思う(調べてはいないが タイトルにもある通りだが、readfileは巨大なファイルを扱える、もちろんメモリに溜め込んだりはしない。(この事はきちんと公式マニュアルに書かれて

    [PHP]readfileは巨大ファイルを扱える | なうびるどいんぐ
    iww
    iww 2019/06/05
    『ここから導き出される結論は1つなんですよ、公式のマニュアル読んで下さい。』
  • 2018年のパスワードハッシュ - Qiita

    数年前であれば仕方なかったところですが、2018年の今となっては、パスワードハッシュの手動計算はもはや"悪"です。 まずログイン認証と称してmd5とかsha1とか書いてあるソースはゴミなので投げ捨てましょう。 hashやcryptは上記に比べればずっとマシですが、使い方によっては簡単に脆弱になりえます。 あと『パスワードを暗号化する』って表現してるところも見なくていいです。 PHPには、ハッシュに関わる諸々の落とし穴を一発で解消してくれるpassword_hashという超絶便利関数があるので、これを使います。 というか、これ以外を使ってはいけません。 以下はフレームワークを使わずに実装する際の例示です。 フレームワークを使っている場合は当然その流儀に従っておきましょう。 ハッシュの実装 データベース ユーザ情報を保存するテーブルを作成します。 パスワードカラムの文字数は、システム上のパスワ

    2018年のパスワードハッシュ - Qiita
    iww
    iww 2019/01/09
    php5.5以降ならとても安全に実装できる という話。 うらやましい
  • [PHP] Xdebug のリモートデバッグ、理解していますか? - Qiita

    PHP のデバッグツールである Xdebug にはリモートデバッグという機能があります。 …というのは言うまでもなく、広く知られていると思います。 しかし、Xdebug の設定をなんとなくコピペで済ませたりしていないでしょうか? Xdebug のリモートデバッグ設定、理解していますか? 日語のサイトを検索すると「 xdebug.remote_enable=1 にして、xdebug.remote_host を xxx にして…」と設定だけが淡々と書かれた情報が多いです。 しかし、設定項目について、それぞれの意味を理解していないとトラブル時の対処が難しくなります。 リモートデバッグとは何か? リモートデバッグ (Remote Debugging) とは、実行中の PHP とは別の場所にデバッグを制御するものが存在する 方式です。 よくある環境だと、次のように図示できます。 PHP 体とは別

    [PHP] Xdebug のリモートデバッグ、理解していますか? - Qiita
  • How To Install Linux, Nginx, MySQL, PHP (LEMP Stack) on Debian 8 | DigitalOcean

    // Tutorial //How To Install Linux, Nginx, MySQL, PHP (LEMP Stack) on Debian 8 Introduction The LEMP software stack is a group of software that can be used to serve dynamic web pages and web applications. This is an acronym that describes a Linux operating system, with an Nginx web server. The backend data is stored in the MySQL database and the dynamic processing is handled by PHP. In this guide,

    How To Install Linux, Nginx, MySQL, PHP (LEMP Stack) on Debian 8 | DigitalOcean
    iww
    iww 2017/06/21
    割とわかりやすい
  • PHP の error_log に syslog を指定した際に他のログと混ざらないようにする

    PHPerror_log に syslog を指定した際に他のログと混ざらないようにする 2013-08-30-1: [PHP] PHP のランタイムのエラーログですが、ファイルを指定するより syslog 経由にしたほうが何かと楽です。 ファイルの場合は、ユーザ権限で実行している cli でのエラーと httpd でのエラーの両方を記録するために、 パーミッションをもしかしたら 777 とかにする必要があるかもしれませんが、 syslog の場合は特にそんなこと気にする必要がありません。 php.ini で下記の設定をするだけなのですが、これだけだとちょっと都合が悪いです。 sudo vim /etc/php.ini error_log = syslog というのも送信されるログのファシリティは user なので、例えば CentOS 6 だと /var/log/messages

  • PHP: unset - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    iww
    iww 2017/02/14
    『if(isset($a)) { unset($a); } is pointless complication.』 そうなんだ。 無駄なことしてたな
  • WordPress 4.7.1 の権限昇格脆弱性について検証した

    エグゼクティブサマリ WordPress 4.7と4.7.1のREST APIに、認証を回避してコンテンツを書き換えられる脆弱性が存在する。攻撃は極めて容易で、その影響は任意コンテンツの書き換えであるため、重大な結果を及ぼす。対策はWordPressの最新版にバージョンアップすることである。 稿では、脆弱性混入の原因について報告する。 はじめに WordPress体に久しぶりに重大な脆弱性が見つかったと発表されました。 こんな風に書くと、WordPressの脆弱性なんてしょっちゅう見つかっているという意見もありそうですが、能動的かつ認証なしに、侵入できる脆弱性はここ数年出ていないように思います。そういうクラスのものが久しぶりに見つかったということですね。 WordPress、更新版で深刻な脆弱性を修正 安全確保のため情報公開を先送り Make WordPress Core Conten

    WordPress 4.7.1 の権限昇格脆弱性について検証した
    iww
    iww 2017/02/06
    なるほどこれはお手軽だな。 ちょっと確認してみよう
  • いわゆる機種依存文字をPHPでメールする - American Life in the Summertime

    よく判らん。 先日仕事で作ったケータイサイトで、クレームがついた。 別にクレームでもないか。 要するにいわゆる「機種依存文字」が化けるんだけど?って。 ケータイサイトなんで、HTML側はShift-JISで、PHPUTF-8です。 SJISのサイトからSJISで受け取った文字列をUTF-8に変換して、各種処理(入力チェックとか、内容の確認)をして、HTMLで表示する直前にSJISに戻すことをしている。 で、メールを送信する際に mb_language('ja'); を実行しているので、ISO-2022-JPで扱われることになる。 e-mail メッセージのエンコーディングとして使用します。有効な言語は、"Japanese", "ja","English","en", "uni" (UTF-8) です。 mb_send_mail() は、e-mail をエンコードする際にこの設定を使用しま

    いわゆる機種依存文字をPHPでメールする - American Life in the Summertime
  • PDOのサンプルで数値をバインドする際にintにキャストしている理由

    先日PHPカンファレンス北海道2016にて「『例えば、PHPを避ける』以降PHPはどれだけ安全になったか」と題して基調講演を担当致しました。その際のスライドはこちら。 そうしたところ、以下のご指摘をいただきました。 @ockeghem スライド拝見しました。39番目のスライドですが、バインドのタイミングでintにキャストするのはちょっと例として良くない気がします。意図的にオーバーフローを起こすことで想定外のレコードの取得を許してしまいそうです。キャストしない方がまだ安全だと思うのですが。 SQLデータベースは、int型よりも大きな桁数を扱える場合があるので、intへのキャストを避けた方がよいという指摘は一般論としてはもっともなものだと考えます。PHPの場合、9223372036854775807を越える数字文字列をint型にキャストすると、9223372036854775807が返ります(

  • 異なる言語間での暗号化と復号 - ぱせらんメモ

    仕事でデータを暗号化して保存する必要が出てきたので色々調べてみた。 メインのシステムはPHPで作っているんだけど、Javaなども絡んでくるので、お互いが処理できる暗号方式でなければいけない。 仕様さえ明確にしてあればオレオレアルゴリズムでもいいんだけど、今回はかなり重要なデータを扱うので世間でそれなりに使われている暗号方式を使うことにした。 暗号の種類 自分も暗号にそんな詳しいわけではないけど、「データをパスワードで暗号化するんでしょ?」ぐらいにしか思ってない人はきっと大変な思いをする。 今の話で登場するのは 暗号化したいデータ 暗号の種類(アルゴリズム) パスワード(暗号処理に使うキー) の3つだけど、これからやろうとしてるブロック暗号では 暗号化したいデータ 暗号の種類(アルゴリズム) 暗号処理に使うキー(パスワードというかバイト列) 暗号利用モード(ブロック処理の種類) 初期化ベクト

    異なる言語間での暗号化と復号 - ぱせらんメモ
    iww
    iww 2016/04/11
    『PKCS#5 Padding: この方式は切り捨てるべきサイズ(=埋めるサイズ)の値を表すバイト値で足りない分を埋めるという方式。』
  • Eclipseのエラー抑制:DLTK問題・ビルドパス・バリデータ

    EclipseでGitなどのソースコードリポジトリから新たにプロジェクトをチェックアウトした時など、ビルド時や検証時に出現するエラーの対応に苦労するのは僕だけではないはず。必要なところだけにエラーをだして欲しいのだが、外部のライブラリや自分の担当ではない部分のエラーまで出てしまったりする。 中にはエラーを放置していて、数百ものエラーをそのままにしている人も見たことがあるけれど、必要なエラーだけを出すようにすれば、バグを未然に防いだり、非推奨のコードをうっかり使うのを防止してくれたりと、Eclipseのメリットを享受できるのだ。 まあでも、この設定意外とわかりにくい。僕も全部は分かっていないが、とりあえず現時点で自分が分かっている範囲で概要をまとめてみたい。まず、Eclipseでの出るエラーは DLTK問題 <言語名>問題 の2つに大きく分けられると思う。後者は例えばXML問題とかHTML

    Eclipseのエラー抑制:DLTK問題・ビルドパス・バリデータ
  • この先生きのこるには

    ちょっとずつ複雑なことをやっていっているのですが、正直まだ自分で作っていくイメージがついていません。 加速と減速=イージングタイムラインパネルのフレーム数がでてるとこの下のスライダーでワークエリアの幅を操作できるグラフエディターというのが存在する。値グラフと速度グラフ。グラフを編集するときに触るのはハンドルだけイージングの速度が早くてコマが見える時はモーションブラーをかける(13:40)モーションブラーは色々ごまかせてしまうので最後につけたほうがいい。処理が重いから最初のほうでつけるとプレビューのときにしんどいとかもある(ただプレビューのときだけオフにするとかもできる)

    この先生きのこるには
    iww
    iww 2015/02/17
    『シャローコピーとディープコピーの違い – くろの雑記帳 にある図はちょっと間違いで、数値や文字列はそのままコピーされます。』
  • PHPを愛する試み 〜self:: parent:: static:: および遅延静的束縛〜 - maeharinの日記

    PHPを愛する試みというものを個人的にやっている PHPを愛する試み PHPを愛する試み 〜調教編〜 今回は、self:: parent:: static:: 遅延静的束縛について図で整理してみた。 スコープ定義演算子 (::) まず「::」について。これはスコープ定義演算子という。マニュアルには以下のようにある。 スコープ定義演算子 (::) スコープ定義演算子 (またの名を Paamayim Nekudotayim)、 平たく言うと「ダブルコロン」は、トークンのひとつです。 static, 定数 およびオーバーライドされたクラスのプロパティやメソッドにアクセスすることができます。これらの要素をクラス定義の外から参照する際には、 クラスの名前を使用してください。PHP 5.3.0 以降では、変数を用いてクラスを参照することも可能です。 変数の値に (self や parent、 stat

    PHPを愛する試み 〜self:: parent:: static:: および遅延静的束縛〜 - maeharinの日記
    iww
    iww 2015/01/15
  • 【 ほでなすPHP 】 PHP5の基本 -> 特殊メソッド/オートロード

    特殊メソッド/オートロード PHPには、「__construct()」(コンストラクタ)や「__destruct()」(デストラクタ)の他にも、その名前で定義されたメソッドは“呼ばれ時”になると勝手にコールされるという「特殊メソッド」があります。また「特殊関数」があります。 何れも「__(アンダーライン2)」で始まるメソッド名または関数名です。PHPでは「__(アンダーライン2)」で始まるメソッド名または関数名を、“特殊な関数”として予約していて、「__(アンダーライン2)」で始まる関数名を付けないよう推奨されているので、付けない様にしましょう。 これらの「特殊メソッド・関数」を定義する場合、“引数の数と返り値の型を決められた形態通りに定義”しなくてはなりません。そうしないと機能しないし、コールされる際に「E_ERROR」エラーを発するか、場合によってはサーバがダウンします。 特殊メ

    iww
    iww 2014/09/12
    特殊関数いろいろ
  • はじめてのKohana (1) Hello World ! - Mach3.laBlog

    この記事は賞味期限切れです。(更新から1年が経過しています) KohanaはPHPのMVCフレームワークです。 日語情報が乏しいせいか、まだあまり国内では使われていない印象ですが、 ここに導入のメモを記してみます。全七回。 はじめに 連載は、私がKohanaに興味をもって導入し、色々試してみた記録をまとめたものなので、 あまり体系的に紹介できていない部分があるかもしれませんが、ご了承ください。 また、導入時に書いた物なので、そこまで突っ込んだ内容はありません。 Kohanaの日語情報は日ユーザ会による翻訳ドキュメントぐらいしか無く(内容は1バージョン前だったりします)、 公式(英語)もそこまできちんと整備されているわけではなく、まだ歯抜けも見られるのが現状です。 そんな中で、少しでも情報を補足・共有出来れば良いなと思い、筆をとった次第です。 執筆当時の最新版(バージョン3.2)を基

    はじめてのKohana (1) Hello World ! - Mach3.laBlog
  • PHPオブジェクト指向入門(前半) - Qiita

    コンセプト オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 クラスとオブジェクト(初級) 唐突ですが、量産型のロボットの設計・製造について考えてみましょう。 ロボ太郎 ロボ次郎 イラストで初心者を釣る クラス まず、ロボットの設計図を クラス として定義します。設計図をもとにロボットを製造するには、 new 演算子を使います。製造された物体のことを オブジェクト や インスタンス と呼びます。ここではこれらの用語を区別せずに用いることにします。 Yahoo!知恵袋 - オブジェクトとインスタンスの違い

    PHPオブジェクト指向入門(前半) - Qiita