CodeIgniter 4.0 のサーバ要件 PHP 7.2 以上 php-json、php-mysqlnd、php-xml が有効 intl、mbstring 機能拡張 libcurl(CURLRequest を使う場合) データベース MySQL 5.1 以上(MySQLi ドライバ) PostgreSQL(Postgre ドライバ) SQLite3(SQLite3 ドライバ) 動作確認環境 CodeIgniter 4.0.4 Composer 2.0.8 PHPUnit 8.5.13 PHP 7.4.13 Xdebug 3.0.1 MySQL 5.7.32 macOS 10.15.7 Composer のインストール Composer とは、PHPでの新しいパッケージ(ライブラリ)管理システムです。 Composer はパッケージ管理コマンドとしての composer コマンド、パッ
CodeIgniter Advent Calendar 2020 の記事ですが、今日は「フレームワークへの依存をいかに減らすか」というテーマです。 フレームワークの入門書、入門記事、公式ドキュメントには多分出てこない話題です。 フレームワークの罠 CodeIgniter4 についてチュートリアルから始めて、いろいろと書いてきました。 普通にユーザガイドを読んでアプリを開発していこうとすると、アプリは以下のように階層化されます。 黒い矢印は依存です。 MVC パターン 依存とはそれを使うということです。 コントローラがモデル、ビュー、そしてフレームワークに依存します。モデルもビューもフレームワークに依存します。 要するにフレームワークのユーザーが書くコードはほぼ全てフレームワークに依存します。フレームワークと密結合します。フレームワークがないとほとんど全く動きません。 普通にフレームワークを
去年末(2019/12)にオススメ書籍をまとめてみたことがあったので、それを少し更新して公開します。 上にある書籍がよりオススメというわけではないです。 対象者は「PHP中級者」です。中級者が何かは難しいですが、初心者、初級者では決してないとは言えます。 改めて一覧にしてみると、かなり偏っているかも知れません(笑 こういうのはコンテキストというのがあるため、それが合わないと「お前は何を薦めているのだ?」となるでしょうね。 キーワードは、「モデリング」「オブジェクト指向プログラミング」「TDD」「デザインパターン」「DDD」「チーム開発」「アジャイルソフトウェア開発」「スクラム」でしょうか。 PHP中級者のイメージ たぶん、PHP中級者であれば、PHPに関することはPHPマニュアルなどを調べて解決できるでしょう。PHPのオープンソースプロジェクトに貢献しており、自分でプロジェクトを持っている
ベストプラクティスも時の経過に伴い変わっていきます。 FuelPHPのインストール方法は従来oilコマンドをインストールして行う「クイックインストール」でした。しかし、現在、この方法はクイックではありません。 ということで、私が考えるインストール方法のベストプラクティスをまとめておきます。 リリース版をインストールする場合 結論から言うとZipファイルからインストールする方法が最速かつ簡単です。 Zip ファイルをダウンロードする ブラウザを使う場合は、http://fuelphp.com/ にアクセスし「Download v1.7.3 now!」ボタンをクリックしてください。 コマンドラインからは以下でダウンロードできます。 $ curl http://fuelphp.com/files/download/34 -o fuelphp-1.7.3.zip ダウンロードしたZipを解凍し、必
「PHPを使いもせずDISってる君達へ - Qiita」という記事がありました。 概ね正確な内容ですが、まだ根本的にPHPの配列の仕様がわかっていないような記述が一部に見受けられました。端的なものが以下です。 今まで話したようにPHPには配列型と辞書型は曖昧なものです。 およそプログラミング言語の実装において型が曖昧ということはありえません。内部的には型は厳密です。でなければ実装できません。 ただし、自動的に型が変わることがあり、ユーザの理解が曖昧だと、言語の仕様も曖昧に感じるということです。 ということで、PHPの配列についてよく理解していないPHPユーザもまだいるでしょうから、仕様について少し記事を書くことにします。 PHPの配列とは? PHPの配列について知っておくべきことは以下ではないかと思います。 PHPの配列はarray型の1つしかない PHPの配列は順番を保持している 配列の
今日はPHP界隈で大人気のDependency Injectionと、それに関連する用語について整理しておこうと思います。 以下のような状況があるのではないか?と思ったからです。 多くのPHPユーザがDependency Injection(DI)をよくわかっていない、あるいは正確に説明できません。 そして、デザインパターンである「DIパターン」とDIをサポートするツールである「DIコンテナ」を混同しています。 また、「DIパターン」と「サービスロケータパターン」をうまく区別できていません。 Dependency Injectionとは何か? Dependency Injectionとは「Dependency」を「Injection」するというデザインパターンです。 日本語では何故か「依存性の注入」と訳されており、これが混乱の元ではないかと思います。 日本語で「依存性」と言うと、「依存性は
あなたのお気に入りのフレームワークCodeIgniterが帰ってきた!(CodeIgniter 3.0の感想) すでにご存じの人も多いと思いますが、2015年3月30日にCodeIgniter 3.0.0がリリースされました。 その影響もあり、日本語の情報も徐々に増えてきてます。そこで、私もこのあたりで現在の感想を書いておこうと思います。 (参考)PHPカンファレンス福岡でのCodeIgniterについて発表資料 ライセンスがMITライセンスに変更 何と言っても最大の変更点はライセンスが変わったことです。 2.xまでは独自ライセンスのCodeIgniterライセンス(GPL非互換)だったものが、3.0からはMITライセンスになりました。 これは、CodeIgniterのオーナーが私企業のEllisLabから、大学であるBCITに変わったことにより実現しました。 EllisLabにより3.0
今日はPHP製のデプロイツールの紹介です。デプロイツールとはCapistranoみたいなツールのことです。コマンド一発でデプロイが完了するようにするツールです。 PHP製のツールもいくつかありますが、Deployerは非常にシンプルなツールで、最近3.0がリリースされました(最新版は3.0.4)。 https://github.com/deployphp/deployer/releases/tag/v3.0.0 より。 インストールが簡単 公式サイト http://deployer.org/ へアクセスし、deployer.pharをダウンロードするだけです。 公式には/usr/local/bin/depにインストールすると書いてありますが、プロジェクトのフォルダに突っ込んでも問題ありません。 私はプロジェクトのルートにdeployというフォルダを作成し、そこに関連するファイルをまとめるこ
時代はTwigです あのEC-CUBEもバージョン3からテンプレートエンジンをTwigに変更します。 土曜日にあったOSC Nagoyaで教えてもらったのですが、実はTwigには、配列もオブジェクトもドット(.)で表現できるという圧倒的な優位性がありました。 Twigでは$foo['bar']も$foo->barも$foo->bar()も以下のように表現できます。 {{ foo.bar }} すっきりしてますね。 ということで、CodeIgniterでもTwigを使いたいと思います。 CodeIgniter Simple and Secure Twig CodeIgniterでTwigを簡単に使うために「CodeIgniter Simple and Secure Twig」というツールを作成しました。 https://github.com/kenjis/codeigniter-ss-twi
(2015/04/22 Addition) This article is out of dated. Please see the latest benchmarks at https://github.com/kenjis/php-framework-benchmark. I've changed my benchmarking policy, the number of frameworks to benchmark has been increased, and version of frameworks has been updated. CakePHP 3.0 has been released at last, CodeIgniter 3.0 and BEAR.Sunday 1.0 will come soon. So I benchmarked latest 9 10 PH
(2015-04-22 追記) この記事は古くなっています。最新のベンチマーク結果は https://github.com/kenjis/php-framework-benchmark を参照願います。現在はベンチマークポリシーの一部を変更し、ベンチマーク対象フレームワークが増え、バージョンも更新されています。 CakePHP 3.0がついにリリースされ、CodeIgniter 3.0もBEAR.Sunday 1.0もリリース目前です。 そこで、以下の 9 10の最新PHPフレームワークをベンチマークしてみました。 Phalcon 1.3.4 CodeIgniter 3.0-rc3 Slim 2.6.2 Yii 2.0.4 FuelPHP 1.8-dev Silex 1.2.3 BEAR.Sunday 1.0.0-rc2 CakePHP 3.0.0 Symfony 2.6.5 Larave
「FuelPHPのAgentクラスが重い問題と暫定的な対処方法」の改訂版です。 問題の所在 FuelPHP 1.xには、ブラウザ種別、バージョン、プラットフォーム、OSなどを取得するAgentクラスがありますが、その処理が重い、メモリ消費が大きいという問題です。 Agentクラスが使用するブラウザ情報が記録された「browscap.iniファイル」が大きくなったことに比例して、処理が重くなります。 詳細は、FuelPHPのAgentクラスが重い問題と暫定的な対処方法を参照してください。 前回は、browscap/browscap-phpを使う方法を書きましたが、その後も「browscap.iniファイル」が大きくなっており、更新時のメモリ消費が半端なく大きくなってしまっています。 対処方法 今回、新たに別のライブラリを使います。 3. Crossjoin\Browscapを使う Cross
FuelPHP 1.xのすべてのサブリポジトリの1.8/developブランチ(今だと開発中の1.7.3)にcomposer.jsonが追加されました。これにより、Composerによるサブリポジトリのインストールでrepositoriesの指定にpackageではなくvcsが使えるようになりました。 FuelPHP 1.xのコンポーネント(fuel/coreなど)は、Composerのrepositoriesの指定にpackageを使っているため、composer updateしても最新の1.8/developブランチの状態には更新されません。 という制限はvcsを使えば、今後はなくなります。 FuelPHP 1.8-devのインストール方法 開発版である1.8/developブランチは次のようにインストールできます。 まず、普通にoilコマンドで最新の安定版(現在1.7.2)をインスト
今日は、FuelPHPのプロジェクトのためのJenkinsサーバを構築してみます。 この設定で完璧というわけではないですが、いろいろなものが一通り動くレベルにはなってます。 FuelPHPプロジェクトを作成する FuelPHPのプロジェクトとして、ここでは、『はじめてのフレームワークとしてのFuelPHP 第2版(改訂版)』のコンタクトフォームを使います。 develop-2ブランチをgit cloneします。 $ git clone --depth=5 -b develop-2 https://github.com/kenjis/fuelphp1st-2nd-contact-form.git 以下は、プロジェクトがGitで管理されていることを前提としています。 Vagrantを使いサーバを構築する Vagrant CentOS6 PHP Development Environment(v
イギリスのIT系の出版社であるPackt Publishingから、CodeIgniterに関する6冊目の書籍『CodeIgniter Web Application Blueprints』が今月(2015/1)発売されていました。紙の書籍と電子書籍の両方があります。 以下のようにAmazonでも売ってます。 以下の出版社のサイトからも購入できます。 https://www.packtpub.com/web-development/codeigniter-web-application-blueprints しかし、Kindle版は安いですね。DRMがどうなっているのかは不明ですが。PacktはDRM freeなのでKindleでもそうなのかも知れませんが。 出版社Packt Publishingについて イギリスで2004年に創業されたIT関連の出版社です。 Packt's eBooks
PHP関連の翻訳プロジェクトの存在を知ってもらい、参加したい人が参加方法を探せるようにまとめています。 ここにない、ご存じの翻訳プロジェクトがありましたら、お知らせください。 PHPマニュアル http://ml.php.gr.jp/ の「PHP-doc メーリングリスト」にて英語ドキュメントの日本語への翻訳が進められています。 PHP-doc メーリングリスト フレームワーク CodeIgniter GitHubにてドキュメントの翻訳が進められています。 https://github.com/codeigniter-jp/user_guide_src_ja FuelPHP GitHubにてドキュメントの翻訳が進められています。 https://github.com/NEKOGET/FuelPHP_docs_jp Phalcon TransifexにてWebサイトとドキュメントの翻訳が進め
rootのcomposer.lockにバージョンが記載されていれば、composer installした場合は、その記載バージョンのパッケージがインストールされます。 では、依存パッケージにcomposer.lockがある場合は、どうなるのでしょう? 確認してみましょう。 現在、Ray.Diにはcomposer.lockが含まれています。そして、doctrine/annotationsのバージョンがv1.2.1になっています。 https://github.com/koriym/Ray.Di/blob/develop-2/composer.lock#L11 検証方法 まず、フォルダを作成し、rootのcomposer.jsonを作成します。 { "require": { "ray/di": "~2.0@dev" }, "minimum-stability": "dev", "prefer-
FuelPHPには、security.csrf_autoloadという設定があります。この設定は、デフォルトはfalseです。 何が言いたいのか? この設定をtrueにしよう!ということが言いたいわけです。 security.csrf_autoloadをtrueにすると、POST、PUT、DELETEメソッドでのすべてのリクエストで自動的にCSRF保護のトークンチェックが行われるようになります。 trueにするとどうなるのか? トークンがなかったり、マッチしない場合は、以下のエラー(例外)になります。 Fuel\Core\SecurityException [ Error ]: CSRF validation failed, Possible hacking attempt detected! つまり、自動チェックにすればCSRF対策の漏れがなくなります(GETで重要な処理をするような行儀
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く