最新の PHP 新機能シリーズ (1) -- 名前空間
1. ネームスペースとは何ですか
最新の PHP 機能を 1 つだけ知っていればよいのであれば、それはネームスペースです。ネームスペースは PHP5.3.0 で導入されました。その機能は、オペレーティング システムのファイル システムのディレクトリ構造に似た仮想階層構造に従って PHP コードを編成することです。名前空間は、最新の PHP コンポーネント エコシステムの基盤です。最新の PHP コンポーネント フレームワークのコードは、他のメーカーが使用する一般的なクラス名との競合を避けるために、独自のグローバルに固有のメーカーの名前空間に配置されます。
実際の PHP コンポーネントが名前空間をどのように使用するかを見てみましょう。 Laravel フレームワークの Http コンポーネントは、HTTP リクエストとレスポンスを管理するために使用されます。このコンポーネントは、Request や Response などの共通のクラス名を使用します。他の PHP コードも同じクラス名を使用します。このコンポーネントの使い方は?実際、このコンポーネントのコードは唯一のメーカーの名前空間 Illuminate に配置されているため、安心して使用できます。 GitHub (https://github.com/laravel/framework/blob/master/src/Illuminate/Http/Response.php) でこのコンポーネントのリポジトリを開き、Response.php ファイルを見つけます:
Line 3 As
namespace Illuminate\Http;
この行は PHP 名前空間宣言ステートメントであり、名前空間を宣言するコードは常に
名前空間の役割は、関連するファイルをファイル システムの同じディレクトリに置くのと同じように、関連する PHP クラスをカプセル化して整理することです。 PHP 名前空間は、オペレーティング システムの物理ファイル システムとは異なり、仮想概念であり、ファイル システムのディレクトリ構造とまったく同じである必要はありません。ただし、ほとんどの PHP コンポーネントは、広く使用されているものと互換性があります。 PSR-4 オートロード標準。ネームスペースは、対応するファイル システムのサブディレクトリに配置されます。
2. 名前空間を使用する理由
前に述べたように、私たちのコードは他の開発者のコードと同じクラス名、インターフェイス名、関数、または定数名を使用する可能性があります。名前空間を使用しない場合、名前は競合します。が発生し、PHP 実行エラーが発生します。名前空間を使用してコードをメーカー固有の名前空間に配置することで、コードは他の開発者と同じクラス名、インターフェイス名、関数、または定数名を使用できます。
もちろん、依存関係が少数しかない小規模な個人プロジェクトを開発している場合は、クラス名の競合は問題にならないかもしれませんが、チームで作業し、多くのサードパーティの依存関係を使用する大規模なプロジェクトを開発する場合は、次のことを行う必要があります。名前の競合の問題は深刻です。プロジェクトが依存するグローバル名前空間に導入されたクラス、インターフェイス、関数、定数を制御できないため、名前空間が使用されます。
3. 名前空間の宣言
すべての PHP クラス、インターフェイス、関数、および定数は、
名前空間は、トップレベルのベンダー名を設定するためによく使用されます。たとえば、ベンダー名を LaravelAcademy に設定します。
<?phpnamespace LaravelAcademy;
この名前空間宣言ステートメントの後に宣言されたすべての PHP クラス、インターフェイス、関数、および定数は、LaravelAcademy 名前空間にあります。 Laravel Academy と何らかの関係があるのと同じです。アカデミーで使用されるコードを整理したい場合はどうすればよいでしょうか?答えは、サブ名前空間を使用することです。
サブ名前空間の宣言方法は前の例とまったく同じです。唯一の違いは、シンボルを使用して名前空間とサブ名前空間を区切る必要があることです。例:
<?phpnamespace LaravelAcademy\ModernPHP;
すべてのクラス、インターフェイス、この名前空間以降の関数と定数は LaravelAcademyModernPHP にあります。
同じ名前空間内のクラスを同じ PHP ファイル内で宣言する必要はありません。このとき、このファイルのコードは名前空間またはサブです。 -名前空間の一部。したがって、同じ名前空間に属する複数のクラスを異なるファイルに記述することができます。
注: メーカーの名前空間はトップレベルの名前空間であり、ブランドまたは組織を識別するために使用され、世界的に一意である必要があります。サブネームスペースは比較的重要ではありませんが、プロジェクトのコードを整理するために使用できます。
4、导入和别名
在命名空间出现之前,PHP开发者使用Zend风格的类名解决命名冲突问题,这是一种类的命名方案,因Zend框架而流行,这种命名方案在PHP类名中使用下划线的方式表示文件系统的目录分隔符。这种约定有两个作用:其一,确保类名是唯一的;其二,原生的自动加载器会把类名中的下划线替换成文件系统的目录分隔符,从而确定文件的路径。例如, Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query 类对应的文件是 Zend/Cloud/DocumentService/Adapter/WindowsAzure/Query.php 。可以看出,这种命名有个缺点:类名特别长。
现代的PHP命名空间也有这个问题,例如上述 Response 类完整的全名是 Illuminate\Http\Response ,幸好,我们可以通过导入以及创建别名的方式来改变这一状况。
导入的意思是指,在每个PHP文件中告诉PHP想使用哪个命名空间、类、接口、函数和常量,导入后就不用使用全名了:
<?phpuse Illuminate\Http\Response;$response = new Response(‘Oops’, 400);$response->send();
我们通过 use 关键字告诉PHP,我们想使用 Illuminate\Http\Response 类,我们只需要输入一次完全限定的类名,随后实例化 Response 的时候,无需使用完整的类名。
如果觉得这样的类名还是长,可以创建别名。创建别名指的是告诉PHP我要使用简单的名称引用导入的类、接口、函数或常量:
<?phpuse Illuminate\Http\Response as Res;$res = new Res(‘Oops’, 400);$res->send();
从PHP 5.6开始还可以导入函数和常量,不过要调整use关键字的句法,如果要导入函数,需要使用 use func :
<?phpuse func Namespace\functionNamefunctionName();
如果想导入常量,可以使用 use constant :
<?phpuse constant Namespace\CONST_NAME;echo CONST_NAME;
当然也支持别名,创建方式和类一样。
5、实用技巧
多重导入
如果想要在PHP文件中导入多个类、接口、函数或常量,需要在PHP文件的顶部使用多个use语句,PHP支持用简短的语法把多个use语句写成一行:
<?phpuse Illuminate\Http\Request,Illuminate\Http\Response;
但是为了可读性,建议不要这么写,还是一行写一个use语句比较好:
<?phpuse Illuminate\Http\Request;use Illuminate\Http\Response;
一个文件使用多个命名空间
PHP允许在一个文件中定义多个命名空间:
<?phpnamespace Foo { //声明类、接口、函数、常量}namespace Bar { //声明类、接口、函数、常量}
但这么做不好,违背了“一个文件一个类”的良好实践,因此不建议这么做。
全局命名空间
如果引用的类、接口、函数和常量没有指定命名空间,PHP假定引用的类、接口、函数和常量在当前的命名空间中。如果要使用其他命名空间的类、接口、函数或常量,需要使用完全限定的PHP类名(命名空间+类名)。
有些代码在全局命名空间中,没有命名空间,比如原生的Exception类就是这样。在命名空间中引用全局的代码时,需要在类、接口、函数或常量前加 \ 符号:
<?phpnamespace My\App;class Foo { public function doSomething() { throw new \Exception(); }}
自动加载
命名空间还为PHP-FIG制定的PSR-4自动加载标准奠定了坚实的基础,大多数现代的PHP组件都使用了这种自动加载模式,使用依赖管理器Composer可以自动加载项目的依赖,后续我们还会详细介绍Composer和PHP-FIG,现在你只需要知道没有命名空间,就没有现代的PHP生态系统和基于组件的新型架构,由此可见命名空间的重要性。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)
