ホームページ > バックエンド開発 > PHPチュートリアル > ColaPHP 2.0αリリース_PHPチュートリアル

ColaPHP 2.0αリリース_PHPチュートリアル

WBOY
リリース: 2016-07-14 10:07:49
オリジナル
1029 人が閲覧しました

フレームワーク ファイルのサイズは 188KB から 131KB に削減され、コード量は 30% 削減されました。これは主に、多くのメンバー変数を公開し、set/ を大幅に削減したことによるものです。さらに、いくつかのコード、特に以前のコードはリファクタリングされており、あまり変更できません。

もう 1 つの明らかな変更は、Com を Ext に変更することです。以前のアイデアは Component でした。Com の意味が不明瞭で誤解しやすいとの意見もあったため、名前を Ext に変更しました。 (拡張子) )、より単純な、コア + 拡張子。もちろん、良い命名コードの半分は完成しました。もちろん、Ext も曖昧だと思っている友人もいますが、私はもう大丈夫です。
この 2.0 の開発中に興味深い 2 つのことを共有させてください:
1) 戻り値の問題
昔ツイッターで戻り値を全て {'code' : 0, 'data' : xxx} に変更したいと言いましたが、今回開発中に全て変更するか迷っていました。戻り値はこのようになります。
PHP はまだ完全なオブジェクト指向言語ではありません。少なくとも Python のように __bool__ メソッドをオーバーロードすることはできず、戻り値を直接判断することはできません。
if ($obj->foo($bar)) {
//何かしてください
}
配列を返すように変更する場合は、コードを次のように変更する必要があります:
$result = $obj->foo($bar);
if (0 === $result['code']) {
//何かしてください
}
私はそれがあまり好きではありません。コードをもう 1 行追加すると、「怠け者」プログラマーの考え方と一致せず、多くの人の「神経」を調整することになります。
最近はデータとエラー情報を返すGo言語のエラー処理メソッドも気に入っているので、ColaPHPの戻り値のほとんどは失敗した場合はfalseを返すように変更しています。 、エラー情報の迅速な取得を容易にするために、追加のエラー メンバー変数が提供されています:
if ($obj->foo($bar)) {
//何かしてください
} 他 {
var_dump($obj->エラー);
}
これはトレードオフの解決策と考えられていますが、それでもかなり満足しています。
2) 例外処理
ColaPHP 1.x バージョンは例外をスローするのが好きで、プロセスに影響を与えるすべてのエラーは例外をスローします。これは単純で、粗雑で、直接的で効果的です。 2.0 を開発するとき、ユーザーが ColaPHP コードを使用した直後に {} catch {} などを試行すると、プロセスが中断されてプログラマに任せられることを望まなかったので、わかりやすいエラー メッセージを表示するかどうか迷いました。独自の制御 (これは ColaPHP の設計哲学の 1 つでもあります)。
長い間迷った後、PHP で例外を処理する方法についていくつかの記事を検索しました。Laruence の「When we should use Exceptions?」を見たとき、やはり try-catch と比較して、直接スローする方が良いと思いました。 、if-Else コードを許容することはより困難です。2 つの悪のうち小さい方を選択してください。
全体的に、ColaPHP 2.0 は元のシンプルさに戻ったように感じます。
http://www.bkjia.com/PHPjc/477832.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/477832.html技術記事フレームワーク ファイルのサイズは 188KB から 131KB に削減され、コード量は 30% 削減されました。また、基本的な機能は削減されていません。これは主に、多くのメンバー変数が公開され、set/ が大幅に削減されたためです。 get メソッド、さらに...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート