主题:
写二个带有命名空间的类,必须一个类一个脚本
在其中的一个脚本中引入另一个类
使用use 来导入另一个类的空间来简化空间成员的引用
实现效果:
第一个类文件(Class1.php):
<?php /* * 第一个类文件 */ //建立命名空间php,注意命名空间语句要放在脚本最前面 namespace php\class1; { //在命名空间php下创建一个class1类 class Class1 { //创建公共变量$name,并赋默认值 public $name = 'class1'; //创建公共方法add(),给默认参数 public function add() { //方法功能为输出字符串 return '你好'. $this->name; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
第二个类文件(Class2.php):
<?php /* * 第二个类 */ //创建命名空间php,注意命名空间语句要放在脚本最前面 namespace php\class2; { //在命名空间php下创建一个类 class Class2 { public $name = 'class2'; public function add() { return '你好'. $this->name; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
应用类实例文件(homework.php):
<?php //这里的命名空间不影响use直接限定名称导入外部类 namespace php\homework; //加载外部文件不受命名空间影响,如果使用自动加载器则要注意命名空间路径问题 require 'Class1.php'; require 'Class2.php'; //导入外部文件中的带有命名空间的类(限定名称) use php\class1\Class1; use php\class2\Class2; //此时如果没有导入Class1,会报错 $class1 = new Class1(); echo $class1->add(); echo '<hr>'; $class2 = new Class2(); echo $class2->add();
运行实例 »
点击 "运行实例" 按钮查看在线实例
理解:
在加载外部类文件时,可以直接使用include或require,如果使用自动加载器加载类文件,则要注意类文件中的命名空间问题(不建议自动加载)。
使用include或require直接加载外部类文件不受命名空间影响。
使用use导入类时要注意当前文件是否有命名空间,最好使用限定名称访问。如果有重复名称的类,使用use ... as ... 来起别名访问。