PHPカンファレンス小田原2024での発表資料です https://fortee.jp/phpconodawara-2024/proposal/4d39c7ef-058c-4648-b1d7-5510497e0d81
PHP8などへ移行する際の互換性チェック 「PHP5からPHP8への移行は何が面倒なのか」の記事などに"PHP8移行ツール"とか"互換性チェックツール"というキーワードでたどり着いている人がいるようなので補足しておきます。 いきなりとどめを刺すようで悪いのですが、PHP5とかPHP7からPHP8へ自動移行をするようなツールはおそらくありません(*1)。ただ、互換性のチェックを"ある程度"助けるものとして、静的解析ツールというジャンルのツールを使うことはできます。 開発者でない人向けにざっくり説明すると、静的解析ツールとは、ソースコードをチェックして、エラーやバグの可能性がある怪しい箇所を指摘してくれるツールです。対象のスクリプトを実際には動作させずに内容をチェックすることから"静的"解析と呼ばれます。 PHP8に移行したいスクリプトを静的解析ツールにかければ、"ある程度"は修正箇所の洗い出
FuelPHPのPHP8.1対応(無理矢理編) 皆さん、PHPのフレームワークは何を使っていますか? 今から学ぶなら「Laravel」や昔ながらの「CakePHP」でしょうか? 私は数年前から「FuelPHP」というフレームワークを使っていて「なんて開発しやすいんだ」と感動した記憶があります。 ところが、FuelPHPのリリースがピタッと止まり、PHPのバージョンアップに対して暗雲が立ちこめてきました。 てかフレームワークの選定ミスはかなり痛いですね。私は先物取引には金輪際手を出しません。 幸いPHP7に関しては問題なくできたのですが、時代はPHP8.1になり、ここでついにエラーが出るようになってしまいました。 参考 【PHP8.1】PHP8.1で削除される機能 https://qiita.com/rana_kualu/items/c894b2160d1f8799eed2#key-curr
以下、オートローダー連携のための要件を説明します。 必須要件 完全な名前空間とクラス名のために下記構造としてください。\<ベンダー名>\(<名前空間>\)*<クラス名> いずれの名前空間もトップレベルの名前空間である「ベンダー名」を持つ必要があります。 名前空間は複数の自由な名前空間を持つことができます。 名前空間の区切りは読み込まれる際に、「DIRECTORY_SEPARATOR」に変換されます。 クラス名に含まれるアンダースコア「_」は、「DIRECTORY_SEPARATOR」に変換されます。アンダースコアは特別な意味を持ちません。 名前空間とクラス名に「.php」をつけて完全なファイルとなり読み込まれます。 ベンダー名、名前空間及びクラス名のアルファベット文字列における小文字・大文字の組み合わせは自由です。 例 \Doctrine\Common\IsolatedClassLoade
先日のPHPerKaigi 2018はPHPに興味がある多くのひとびとと直接コミュニケーションがとれる貴重な機会でした1。その中でPSRシリーズへの誤解が聞かれたので一度整理します。 最初にまとめ 「PSRはモダン、準拠しないのはレガシー野郎」といったものではない 相互運用させることを想定しないのなら、100%準拠することに利点はない PSR-2は、それ自身を厳守させるためのコーディングスタイルではない PSRは参考するには値するが、自分たちの事情に合ったものを取り込むべし 後述しますが、筆者の所属するチームではPSR-1, PSR-2を参考にしつつ破って使ってます。 PSRは誰が作ってるの? PSRを管理するのはPHP-FIG (The PHP Framework Interoperability Group、PHPフレームワーク相互運用グループ)です。この組織はPHPのフレームワーク・
◆マニュアルインストールマニュアルインストールの場合は必要なファイルを自分で集めてくる必要があるそうだ。 2) Locate the files you will need. For PHP 4, the files are: php.exe php4ts.dll For PHP 5 you will need: php.exe php-win.exe php5ts.dll (Readmeより引用) その他にも拡張子の関連付けも必要のようだ。 1) In Windows Explorer, associate the .PHPW extension (for WinBinder scripts) with php-win.exe. (Readmeより引用) ◆サンプルが充実している ※ マニュアルインストール は PHP が既にインストールされている環境向けのようだ。 ※ 開発が停止してい
PHPとPythonとRubyの連想配列のデータ構造がそれぞれ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のフレームワークって何?使うメリットを知りたい。今はどんなPHPフレームワークが需要あるの? システムエンジニアがこの悩みにお答えします。 この記事を書いている僕は、WEBコンサルタント兼SEとしてシステムやマーケティングを担当しています。PHPのフレームワークも一通り使ったことがあり、お気に入りはLaravelです。 PHPプログラマーを目指すならば、フレームワークは必ず学習したほうがいいです。 僕は現在、WEB系システムエンジニアとしてPHPの仕事もしていますが、周りのエンジニアもフレームワークかWordPressのどちらかを使うのが一般的です。 需要が高く人気のPHPフレームワークを紹介します。 PHPフレームワークで開発するメリット フレームワークを使うとPHPのプログラミング開発期間を格段に短縮できます。 プログラマーにとって怖いことは、納期に間に合わないことです。 プログ
サマリ PHPサーバーサイドプログラミングパーフェクトマスターには、PHP入門書としては珍しくクロスサイト・リクエストフォージェリ(CSRF)対策についての説明があるが、その方法には問題がある。アルゴリズムとして問題があることに加えて、実装上の問題があり、そのままコピペして用いると脆弱性となる。 はじめに 古庄親方の以下のツイートを見て驚きました。 CSRF用のトークンの作成 $token = password_hash(mt_rand(), PASSWORD_DEFAULT); ってのを書籍で見た………もンのすンげぇなぁ(苦笑 書籍名でググって調べる……評判が悪いので、まぁ、納得っちゃぁ納得。 — がる (@gallu) July 17, 2019 CSRFトークンの生成に、password_hash関数を使うですと? 親方に書籍名を教えていただき、購入したのが、この記事で紹介する「PH
数年前であれば仕方なかったところですが、2018年の今となっては、パスワードハッシュの手動計算はもはや"悪"です。 まずログイン認証と称してmd5とかsha1とか書いてあるソースはゴミなので投げ捨てましょう。 hashやcryptは上記に比べればずっとマシですが、使い方によっては簡単に脆弱になりえます。 あと『パスワードを暗号化する』って表現してるところも見なくていいです。 PHPには、ハッシュに関わる諸々の落とし穴を一発で解消してくれるpassword_hashという超絶便利関数があるので、これを使います。 というか、これ以外を使ってはいけません。 以下はフレームワークを使わずに実装する際の例示です。 フレームワークを使っている場合は当然その流儀に従っておきましょう。 ハッシュの実装 データベース ユーザ情報を保存するテーブルを作成します。 パスワードカラムの文字数は、システム上のパスワ
PHP では @ を付けることでエラーを回避できるという便利な記述方法があり、ものぐさな私などは if (@$var["foo"]) $result = $var["foo"]; みたいなコードを書いてしまいます。 で、この処理が「遅い」という噂やツッコミを度々受けるので調べてみました。 「ほら、そんな気にするほどでも無いよ」という結果を期待していたのですが、、、なんじゃこりゃ。。。 劇遅じゃないですか、これ。 いやはや・・・ ちょっと列挙しますね。以下のようなコードを単純 for 文で 100万回実行したときの結果です。 error_reporting(0) で PHP4 if (@$a["hoge"]) $b = $a["hoge"]; ⇒ 約 2.4 秒 if ($a["hoge"]) $b = $a["hoge"]; ⇒ 約 1.3 秒 if (isset($a["hoge"]))
明示的 意味 แพลตฟอร์มการเรียนรู้และพัฒนาทักษะด้วยเทคโนโลยี https://suin.io เป็นแพลตฟอร์มที่ให้คุณเรียนรู้และพัฒนาทักษะทางเทคโนโลยีอย่างสะดวกสบาย เรามุ่งมั่นในการให้ความรู้และประสบการณ์ที่มีคุณค่าในการพัฒนาตนเอง pascalcase
はい。 ふぃふぃです。 最近javascriptで配列型のデータを扱う機会が増えてきました。 これまでは、特にデータを保管する必要もなかったのですが、 過去データとの比較などをやりたくなってきたので、 サーバにcsv形式で保存する方法を調べておりました。 過去記事にも書きましたがはてな人力検索などで質問をしていると、 どうにも、PHP経由での保存が望ましいとのこと。 PHP、Ajax初心者ということもありかなりはまってしまったのでメモ。 送信側 $(function(){ // 送信・保存するためのデータ配列 var ary_data = new Array(100); //[1,2,3,4,5,6]; for (var i = 0; i < ary_data.length; i++) { ary_data[i]=i; } // 送るデータ形式はJSONでなければ、PHP側でエラーが出る.
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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く