この記事では、主に
PHP オブジェクト指向プログラミングにおける PHP オブジェクト指向名前空間と自動読み込みクラスを紹介し、php 名前空間と自動読み込みの概念、機能、使用方法、関連する 注意事項を分析します。クラスはサンプルの形式で作成されます 、必要な友人はそれを参照できます
この記事では、PHP オブジェクト指向プログラミングの名前空間と自動読み込みクラスについて例を示して説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
Namespace
クラス名の重複とエラーの原因を避けてください。
<?php require_once "useful/Outputter.php"; class Outputter { // output data private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $obj = new Outputter(); // 同一命名空间下,类名不能相同,默认命名空间为空。空也是一种命名空间。 $obj -> setName("Jack"); print $obj->getName(); //namespace useful; // 更改命名空间,否则查询不到Hello类,Fatal error: Class 'my\Hello' not found $hello = new Hello(); ?> <?php // useful/Outputter.php namespace useful; // 命名空间 class Outputter { // } class Hello { } ?>
名前空間でクラスを呼び出す方法
<?php namespace com\getinstance\util; class Debug { static function helloWorld() { print "hello from Debug\n"; } } namespace main; // com\getinstance\util\Debug::helloWorld(); // 找不到Debug类 \com\getinstance\util\Debug::helloWorld(); // 加斜杠之后,就从根部去寻找了。 // outPut:hello from Debug ?>
useキーワード
<?php namespace com\getinstance\util; class Debug { static function helloWorld() { print "hello from Debug\n"; } } namespace main; use com\getinstance\util; //Debug::helloWorld(); //Fatal error: Class 'main\Debug' not found util\Debug::helloWorld(); ?>
を使用して、グローバル
global.phpを表すクラス
<?php namespace com\getinstance\util; class Debug { static function helloWorld() { print "hello from Debug\n"; } } namespace main; use com\getinstance\util\Debug; // 直接使用到类 Debug::helloWorld(); ?>
<?php // no namespace class Lister { public static function helloWorld() { print "hello from global\n"; } } ?> <?php namespace com\getinstance\util; require_once 'global.php'; class Lister { public static function helloWorld() { print "hello from ".NAMESPACE."\n"; // NAMESPACE当前namespace } } Lister::helloWorld(); // access local \Lister::helloWorld(); // access global ?>
出力:
comgetinstanceutilからのこんにちは
グローバルからのこんにちは
名前空間と{}
<?php namespace com\getinstance\util { class Debug { static function helloWorld() { print "hello from Debug\n"; } } } namespace main { \com\getinstance\util\Debug::helloWorld(); } ?>
出力:
デバッグからのこんにちは
グローバル名前空間
<?php namespace { // 全局空间 class Lister { public static function helloWorld() { print "hello from global\n"; } } } namespace com\getinstance\util { class Lister { public static function helloWorld() { print "hello from ".NAMESPACE."\n"; } } Lister::helloWorld(); // access local \Lister::helloWorld(); // access global } ?>
自動読み込みクラス
ShopProduct を読み込みます。 php
<?php class ShopProduct { function construct() { print "ShopProduct constructor\n"; } } ?> <?php function autoload( $classname ) { // 自动加载,根据类名加载类 include_once( "$classname.php" ); } $product = new ShopProduct( 'The Darkening', 'Harry', 'Hunter', 12.99 ); ?>
output:
ShopProductコンストラクター
さらに最適化された処理
はフォルダーbusiness/ShopProduct.php
<?php class business_ShopProduct { // 这里的类命名就要遵循规则了 function construct() { print "business_ShopProduct constructor\n"; } } ?> <?php function autoload( $classname ) { $path = str_replace('_', DIRECTORY_SEPARATOR, $classname ); // 智能化处理 require_once( "$path.php" ); } $x = new ShopProduct(); $y = new business_ShopProduct(); ?>
output:
ShopProductコンストラクター
business_ShopProductコンストラクター
以上がPHPの名前空間と自動読み込みクラスの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。