博客列表 >使用use实现外部命名空间类调用--2018年5月12日17时10分发布(5月8日作业)

使用use实现外部命名空间类调用--2018年5月12日17时10分发布(5月8日作业)

lilove的博客
lilove的博客原创
2018年05月12日 17:28:09930浏览

主题:

  1. 写二个带有命名空间的类,必须一个类一个脚本

  2. 在其中的一个脚本中引入另一个类

  3. 使用use 来导入另一个类的空间来简化空间成员的引用

实现效果:

0508效果.png

第一个类文件(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 ... 来起别名访问。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议