zoukankan      html  css  js  c++  java
  • 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下是分号";")

     

  • 相关阅读:
    关闭编辑easyui datagrid table
    sql 保留两位小数+四舍五入
    easyui DataGrid 工具类之 util js
    easyui DataGrid 工具类之 后台生成列
    easyui DataGrid 工具类之 WorkbookUtil class
    easyui DataGrid 工具类之 TableUtil class
    easyui DataGrid 工具类之 Utils class
    easyui DataGrid 工具类之 列属性class
    oracle 卸载
    “云时代架构”经典文章阅读感想七
  • 原文地址:https://www.cnblogs.com/ch459742906/p/6168352.html
Copyright © 2011-2022 走看看