• PHP使用命名空间:别名/导入(Aliasing/Importing)&include与require/对文件的查找方法


    1.导入,就是使用use操作符

    2.在一个类中导入了另一个类之后,当前的命名空间仍然是当前类的命名空间

    3.注意对命名空间中的名称(包含命名空间分隔符的完全限定名称如 FooBar以及相对的不包含命名空间分隔符的全局名称如 FooBar)来说,前导的反斜杠是不必要的也不推荐的,因为导入的名称必须是完全限定的,(也就是说use时的名称必须是完全限定的,这是默认的。因此不要带"")不会根据当前的命名空间作相对解析。

     

    上图的extend,对名称的解析方法,和new时是一样的,如下图

    4.正常情况下,在类A的方法中导入类B,使用类B必须注明B的名称,否则会在A的命名空间基础上进行寻找

    为什么tpshop的PAYMENTCONTROLLER.CLASS.PHP引入weixin不这样呢?

    5.关于require/include,

    require "a.php"和"./a.php"的寻找方法完全不一样

    分两种情况:

    1.被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path(注释1) 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。所以,,会在三个地方去找

    看实例:

    class weixin extends RelationModel
    {    
        public $tableName = 'plugin'; // 插件表        
        public $alipay_config = array();// 支付宝支付配置参数
        
        /**
         * 析构流函数
         */
        public function  __construct() {   
            parent::__construct();
              require_once('a/test.class.php');exit();      
            require_once("lib/WxPay.Api.php"); // 微信扫码支付demo 中的文件         
            require_once("example/WxPay.NativePay.php");
            require_once("example/WxPay.JsApiPay.php");

    例子中的require,开头都没有指定路径,所以,会去三个地方找

    然后,如果指定了路径,不管是绝对还是相对,都会忽略include_path

    如果定义了路径——不管是绝对路径(在 Windows 下以盘符或者 开头,在 Unix/Linux 下以 / 开头)还是当前目录的相对路径(以 . 或者 .. 开头)——include_path 都会被完全忽略。例如一个文件以 ../ 开头,则解析器会在当前目录的父目录下寻找该文件。

    注释1.

    get_include_path

    (PHP 4 >= 4.3.0, PHP 5)

    get_include_path — 获取当前的 include_path 配置选项

    说明

    string get_include_path ( void )

    获取当前 include_path配置选项的值。

     

    set_include_path

    (PHP 4 >= 4.3.0, PHP 5)

    set_include_path — 设置 include_path 配置选项

    说明

    string set_include_path ( string $new_include_path )

    为当前脚本设置 include_path运行时的配置选项。

     

    使用set_include_path会用到的一个系统常量:PATH_SEPARATOR(windows下是分号";")

     

  • 相关阅读:
    《滑动到顶部悬浮功能条》源代码学习整理笔记
    eclipse中Build Path-Add to Build Path相应到androidstudio的设置
    UML视图(九)部署图
    ios 字典转模型
    Centos 6.5使用Bumblebee关闭N卡,冷却你的电脑
    oracle if then else
    setAnimationTransition:forView:cache: 运行动画时背景色问题
    数据恢复软件使用经验-支持U盘,手机SD卡,硬盘数据,解决图片恢复后打不开的问题
    ZOJ1109_Language of FatMouse(STL/map)
    navicat中文破解版,navicat破解版,navicat for mysql10.0.11简体中文破解版
  • 原文地址:https://www.cnblogs.com/ch459742906/p/6168352.html
Copyright © 2020-2023  润新知