ホームページ バックエンド開発 PHPチュートリアル PHP 名前空間の自動ロード: Composer の自動ロードを使用して自動ロードを実現する方法

PHP 名前空間の自動ロード: Composer の自動ロードを使用して自動ロードを実現する方法

May 22, 2017 am 11:22 AM

在 PHP5 以后的版本中可以定义一个 __autoload() 函数,当调用一个未定义的类的时候就会启动此函数,从而在抛出错误之前做最后的补救,不过这个函数的本意已经被完全曲解使用了,现在都用来做自动加载。后来这个函数实际上已经不被推荐使用了,相反,现在应当使用 spl_autoload_register() 来注册类的自动加载函数。前面我们介绍了php命名空间的基本知识,使用方法,作用等等,这一节就重点来说说php命名空间自动加载。

spl_autoload_register() 的语法格式如下:

bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )
ログイン後にコピー

autoload_function 是需要注册的自动装载函数,如果此项为空,则会注册 spl_autoload 函数,

throw 此参数设置了 autoload_function 无法成功注册时, spl_autoload_register() 是否抛出异常。

prepend 如果是 true, spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。

上面提到了 spl_autoload 函数,实际上注册函数的规范就应当遵循此函数,函数声明如下:

void spl_autoload ( string $class_name [, string $file_extensions ] )
ログイン後にコピー

由于这个函数默认实现是通过 C 语言,所以这里给出一个 PHP 语言的实现规范。

其实例代码如下:

<?php
// 自定义类
define(&#39;CLASS_DIR&#39;, &#39;class/&#39;);
// 添加类的路径
set_include_path(get_include_path().PATH_SEPARATOR.CLASS_DIR);
// 使用自动加载添加类
spl_autoload_extensions(&#39;.class.php&#39;);
// 默认加载
spl_autoload_register();
?>
ログイン後にコピー

大致上就和这个是类似的。实际上命名空间和自动加载类的结合就基本是通过路径形式。

使用composer的autoload来自动加载

composer的出现真是让人们眼前一亮,web开发从此变成了一件很“好玩”的事情,开发一个CMS就像在搭积木,从packagist中取出“ 积木 ”搭建在自己的代码中,一点一点搭建出一个属于自己的王国。

使用composer基本就可以抛弃了require和include函数,一个项目中,这两个函数只可能出现一次,那就是 require '../vendor/autoload.php'。

然后就可以非常方便的去使用第三方的类库了,是不是感觉很棒啊!对于我们需要的monolog,就可以这样用了:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// 创建日志
$log = new Logger(&#39;name&#39;);
$log->pushHandler(new StreamHandler(&#39;/path/to/log/log_name.log&#39;, Logger::WARNING));
// 将记录添加到日志
$log->addWarning(&#39;Foo&#39;);
$log->addError(&#39;Bar&#39;);
ログイン後にコピー

在这个过程中,Composer做了什么呢?它生成了一个autoloader,再根据各个包自己的autoload配置,从而帮我们进行自动加载的工作。

实现方式的步骤:

1. 先安装composer,可以参照php依赖管理工具composer入门教程

2. 在项目根目录创建composer.json文件,写入代码

{
    "type": "project",
    "autoload": {
        "psr-4": {
            "Admin\\": "admin/"
        }
    }
}
ログイン後にコピー

3. 在项目根目录打开命令,写入命令

composer update
ログイン後にコピー

4.等待执行完成。安装成功后,会在项目根目录下新建一个"/vendor/"文件夹。

说明:使用之前需要require一下"/vendor/autoload.php"文件。

$autoLoadFilePath = dirname($_SERVER[&#39;DOCUMENT_ROOT&#39;]).DIRECTORY_SEPARATOR.&#39;vendor&#39;.DIRECTORY_SEPARATOR.&#39;autoload.php&#39;;
require_once $autoLoadFilePath;
ログイン後にコピー

5. 在"/admin/"目录下新建test.php文件,文件内容如下

<?php
namespace Admin;
class test
{
   public function sayHi()
   {
       echo &#39;hi&#39;;
   }
}
?>
ログイン後にコピー

在"/public/"目录下新建index.php文件,文件内容如下

sayHi();
?>
ログイン後にコピー

6. 配置apache,访问路径,得到如下的结果就表示成功。

PHP 名前空間の自動ロード: Composer の自動ロードを使用して自動ロードを実現する方法

【相关教程推荐】

1. 《php.cn独孤九贱(4)-php视频教程

2.  视频教程:命名空间:我们虽然同名同性,但却属于不同时空

3.  php编程从入门到精通全套教程

以上がPHP 名前空間の自動ロード: Composer の自動ロードを使用して自動ロードを実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Composer の高度な機能: エイリアス、スクリプト、競合解決 Composer の高度な機能: エイリアス、スクリプト、競合解決 Jun 03, 2024 pm 12:37 PM

Composer は、次のような高度な機能を提供します。 1. エイリアス: 繰り返し参照するためのパッケージの便利な名前を定義します。 2. スクリプト: データベース テーブルの作成またはリソースのコンパイルに使用される、パッケージのインストール/更新時にカスタム コマンドを実行します。 、満足度制約、およびパッケージ エイリアスは、同じ依存関係バージョンに対する複数のパッケージの異なる要件を解決して、インストールの競合を回避します。

PHPマイクロサービスコンテナ化のアジャイル開発と運用 PHPマイクロサービスコンテナ化のアジャイル開発と運用 May 08, 2024 pm 02:21 PM

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

DevOps プロジェクトにおける PHP CI/CD の役割 DevOps プロジェクトにおける PHP CI/CD の役割 May 08, 2024 pm 09:09 PM

PHPCI/CD は、ビルド、テスト、デプロイメントのプロセスを自動化し、開発効率とソフトウェアの品質を向上させる DevOps プロジェクトの重要なプラクティスです。一般的な PHPCI/CD パイプラインは次の段階で構成されます。 1) 継続的インテグレーション: コードが変更されるたびに、コードは自動的に構築され、テストされます。 2) 継続的デプロイ: テストおよび統合されたコードを実稼働環境に自動的にデプロイすることで、配信をスピードアップします。 PHPCI/CD パイプラインを実装すると、開発効率が向上し、ソフトウェアの品質が向上し、市場投入までの時間が短縮され、信頼性が向上します。

PHPコードのバージョン管理とコラボレーション PHPコードのバージョン管理とコラボレーション May 07, 2024 am 08:54 AM

PHP コードのバージョン管理: PHP 開発では一般的に 2 つのバージョン管理システム (VCS) が使用されます。 Git: 分散 VCS。開発者はコード ベースのコピーをローカルに保存し、共同作業やオフライン作業を容易にします。 Subversion: 集中型 VCS。コード ベースの唯一のコピーが中央サーバーに保存され、より詳細な制御が可能になります。 VCS は、チームが変更を追跡し、共同作業し、以前のバージョンにロールバックするのに役立ちます。

PHPのデータ構造の可視化技術 PHPのデータ構造の可視化技術 May 07, 2024 pm 06:06 PM

PHP でデータ構造を視覚化するための主なテクノロジは 3 つあります。 Graphviz: チャート、有向非巡回グラフ、デシジョン ツリーなどのグラフィカル表現を作成できるオープン ソース ツールです。 D3.js: インタラクティブなデータ駆動型の視覚化を作成し、PHP から HTML とデータを生成し、D3.js を使用してクライアント側で視覚化するための JavaScript ライブラリです。 ASCIIFlow: プロセスとアルゴリズムの視覚化に適した、データ フロー図のテキスト表現を作成するためのライブラリ。

PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? May 08, 2024 pm 10:15 PM

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。

PHP 配列のページネーションで Redis キャッシュを使用するにはどうすればよいですか? PHP 配列のページネーションで Redis キャッシュを使用するにはどうすればよいですか? May 01, 2024 am 10:48 AM

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。

PHP 単体テストと継続的デリバリーの統合 PHP 単体テストと継続的デリバリーの統合 May 06, 2024 pm 06:45 PM

概要: PHPUnit 単体テスト フレームワークと CI/CD パイプラインを統合することで、PHP コードの品質を向上させ、ソフトウェアの配信を高速化できます。 PHPUnit を使用すると、コンポーネントの機能を検証するためのテスト ケースを作成でき、GitLabCI や GitHubActions などの CI/CD ツールでこれらのテストを自動的に実行できます。例: テスト ケースを使用して認証コントローラーを検証し、ログイン機能が期待どおりに動作することを確認します。

See all articles