ホームページ  >  記事  >  バックエンド開発  >  今からPHPを学ぶ際に注意すべきこと

今からPHPを学ぶ際に注意すべきこと

WBOY
WBOYオリジナル
2016-07-25 08:45:51804ブラウズ

php 正しい方法」を読んでください。この記事には多くの内容が含まれており、拡張することができます。ほとんどの用語と概念を知っておく必要があります。このグループの背後にある考え方は、プロジェクトの代表者がプロジェクト間の共通点について話し合い、協力する方法を見つけることです。前の記事で、同僚とのコミュニケーションの中で、PSR (PHP 標準勧告) について何度も言及しました。多くの人は、PSR はコーディング スタイルの標準化などの重要なことだけを行うだけだと考えていますが、実際にはそれをはるかに超えています。

PSR の一連の標準ドキュメントは、php-fig (PHP Framework Interop Group) によって起草され、投票されています。投票メンバーの中には、Laravel、Symfony、Yii などのいくつかの主流フレームワークや拡張機能の作者も含まれています。

公式ウェブサイトによると、この組織の目的は、何をすべきかを指示することではなく、いくつかの主流の枠組みの間で交渉し、相互に合意することです。ただし、これらのフレームワークと拡張機能は常に使用されると思います。

現在 PSR によって承認されている文書は 6 つあります:

0: 自動読み込み (主に名前空間のない PHP 5.3 より前のバージョン用) 1: コーディング仕様

2: コーディングスタイル推奨

3:ログ結果

4: 自動読み込みがより詳細に(名前空間が現れてから大きな変更があります)

7: HTTPメッセージインターフェース

現在ドラフト中(Draft) その中にはPSR-5(PHPDoc)があります標準)、PSR-6(キャッシュ)など5 と 6 はまだ投票されていないため、上記のリストには含まれていません。

基準は更新され続けるので、必ずしもすべてを遵守する必要はないかもしれませんが、これらの規約を勉強することも非常に有益であることがわかると思います。

Nobody in the group doesn't know you, as a programmer, how to build your application.

2.Composer

Composer は、PHP の依存関係管理のためのツールです。プロジェクトが依存するライブラリを宣言すると、それらを管理 (インストール/更新) します

Composer は Pear や Pecl とは異なり、拡張機能をインストールするために使用されるだけでなく、より重要なことに、実装を定義します。最新の PHP フレームワークの拡張機能管理。 node.js の npm や

Python

の pip に似ていますが、上記以上のことを行います。

composer の核心は、拡張機能の標準インストールとクラスの自動ロードを実装することです。 packagest.org プラットフォームを通じて、無数の拡張コンポーネントを簡単に導入できます。現在、よりよく知られている PHP 拡張機能は、composer を通じてインストールできます。この呼び出しで必要なのは、autoload.php ファイルをロードすることだけです。

Composer は spl_autoload_register メソッドを介して自動ロード メソッドを登録し、拡張クラスとファイルをロードします。 もちろん、composer はこのプロセス中に最適化も行いました。

PHP インポート ファイルは include と require を使用して実装する必要があることは誰もが知っていますが、これは実際には見た目が良くない書き方です。 PHP 5.3 は、ファイルのインポートとは関係のない名前空間を提供します。ただし、composer は PSR-4 (古いバージョンの PHP では PSR-0) を実装しています。これを使用すると、spl_autoload_register を呼び出して実装されたメソッドが呼び出されたときに必要なクラスをロードします。これも Python の import に似ていて美しいです。オンデマンド読み込みと遅延読み込みの役割を果たします。

3.php-cs-fixer

PSR-1 および PSR-2 ドキュメントで定義されている PHP コーディング標準に従う必要がある場合、PHP コーディング標準修正ツールはコード内のほとんどの問題を修正します。

このツールの機能は、PSR-1 および PSR-2 仕様に従ってコードをフォーマットすることであり、いくつかのオプションのコーディング スタイルは Symfony 仕様です。

実際、これは本来話す価値はありませんが、最近いくつかのオープンソース フレームワークで .php_cs ファイルを目にし、興味を持ち、さらに調査した結果、このプロジェクトについて知りました。

プロジェクトアドレス:https://github.com/FriendsOfPHP/PHP-CS-Fixer

具体的な使い方や設定方法はプロジェクトのホームページで紹介されています。この組織の名前も興味深いです: FriendsOfPHP。主要メンバーはおそらく Symfony プロジェクトのメンバーです。

コーディングスタイルの問題について心配する必要はないと考える人もいるかもしれません。プログラミングが単なる仕事ではないと考えると、部屋が汚くても食事や睡眠には影響しませんが、きれいなほうが快適に見えるのと同じです。他の人と協力したいのであれば、この問題はさらに重要です。

4.PsySH

ランタイム開発者コンソール、対話型debugger、REPL for PHP.

PsySHはPythonのIDLEに似たPHPの対話型ランタイム環境です。私はこれを Laravel で発見しました。Laravel 5 の職人ティンカーの機能は、Laravel を通じて実装されています。 Laravel 4 は別のプロジェクト、boris を使用します。

これは主に、PHP のいくつかの単純な関数や機能をテストするときに役立ちます。 empty の使用など、不確実な点が発生した場合は、それを使用してテストを行うことができます。

5. いくつかのフレームワークとコンポーネント

フレームワーク

会社では現在 Yii2 と Phalcon (C 言語実装) を使用しています。何を使用し、何を使用しないかは主に好みによるもので、自分で選択せざるを得ない場合もありますが、調べて詳しく知ることは悪いことではありません。

Laravel について言及すると、多くの人はすぐに Ruby on Rails を思い浮かべるでしょう。模倣や盗用が主な目的ではないと思います。主な目的は、開発者により良いツールを提供することです。幸いなことに、Laravel には、別のルーティング制御 (アクションのサフィックスやプレフィックスなし)、便利な ORM (Eloquent)、便利なテンプレート エンジン (Blade)、または比較的見栄えの良いドキュメント (コミュニティが見た場合) などが備わっています。

Powerful は巨大であると批判されることがありますが、これはプロジェクトの中長期計画、現在のプロジェクトの規模、将来の規模と負荷を理解する必要があるためです。

Larvalのコア実装はコンテナ(Container)とPHPのリフレクションクラス(ReflectionClass)です(Yii 2も同様)。これを理解するには、さらに多くの記事やドキュメントを読みながら、ソース コードも参照してください。

Symfony 2 は多くのコンポーネントを提供します。 http-kernel と http-foundation も継承され、Laravel で直接使用されます。それは知り、学ぶ価値があります。

CodeIgniter は小さいながらも強力なフレームワークです。 CI は Composer コンポーネントを使用して開発されていませんが、3.0 以降のバージョンでは Composer サポートも追加されています (これは追加のベンダー ディレクトリと autoload.php ファイルの導入にすぎません)。

ORM

ORMかActive Recordはやはり必要だと思います。 PHP は単なるテンプレート エンジンであり、SQL は手動で記述する必要があると考える人もいるかもしれません。こんな言葉を気にしないでください。

CodeIgniterにおけるActive Recordの実装は非常に軽量ですが、CI自体のサイズを考えると、すでに非常に便利です。

私はLaravelで実装されたEloquentがとても気に入っており、他のプロジェクトに統合することもできます。 Symfony 2 では Doctrine が採用されており、このプロジェクトも注目に値します。 Yii 2 には独自の実装メソッドのセットもあります。

テンプレートエンジン

テンプレートエンジンは3つのことを行う必要があります:

1. 変数値の出力(echo)、

2. 条件判断とループ(if ... else, for , foreach, while)

3. 他のファイルを導入、もしくは継承

Laravelで実装されているBladeは比較的軽量で使いやすいテンプレートエンジンです。ただし、これを他のフレームワークに導入することは、現時点ではそれほど簡単ではありません。暇なときにYii 2に導入してみました。今は簡単な実装ですが、後でBladeの解析部分を抜き出して軽量実装したいと思っています。 Github で検索すると、同じことをしている人が見つかりました。

Yii 2 はネイティブ PHP を使って書くことの方が推奨されているようですが、Smarty や Twig をサポートする拡張機能も提供しています。 Symfony 2 は Twig を使用します。 Twig と Symfony、および上記の php-cd-fixer はすべて SensioLabs の作品です。

Smarty は古くて粘り強いテンプレート エンジンです。正直に言うと、構文が複雑すぎて、変数の代入などに独自のメソッドが必要なため、あまり好きではありません。現在のバージョンではファイルの解析に Lexer が使用されており、PHP で実装された別の言語のように感じられます。プロジェクトには長すぎる正規表現や実装が複雑すぎるものもあり、これは非常に危険でエラーが発生しやすいものだと思います。関連する PHP 情報の詳細 http://www.kokojia.com/list/219.html




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。