php命名空间

命名空间、完全限定名称、限定名称、非限定名称

假装没事ソ 提交于 2020-03-30 04:54:36
转自:http://www.cnblogs.com/milaoshu/articles/2455658.html 日前发布的PHP 5.3中,最重要的一个新特性就是命名空间的加入。本文介绍了PHP命名空间的一些术语,其解析规则,以及一些高级功能的应用,希望能够帮助读者在项目中真正使用命名空间。 在这里中我们介绍了PHP命名空间的用途和namespace关键字,在这篇文章中我们将介绍一下use命令的使用以及PHP如何解析命名空间的名字的。 为了便于对比,我定义了两个几乎一样的代码块,只有命名空间的名字不同。 < ?php // application library 1 namespace App\Lib1; const MYCONST = 'App\Lib1\MYCONST'; function MyFunction() { return __FUNCTION__ ; } class MyClass { static function WhoAmI() { eturn __METHOD__ ; } } ?> lib2.php < ?php // application library 2 namespace App\Lib2; const MYCONST = 'App\Lib2\MYCONST'; function MyFunction() { return __FUNCTION_

学习Laravel-5(二)路由

∥☆過路亽.° 提交于 2020-02-14 00:08:40
##初识路由 路由系统是所有 PHP 框架的核心,路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,一丝不挂,一览无余。Laravel 路由中文文档:http://laravel-china.org/docs/5.1/routing Laravel 5 之后就把路由放到了 learnlaravel5/app/Http/routes.php 这个位置,我们先看一下目前路由中仅存的几行代码: Route::get('/', function () { return view('welcome'); }); Route::auth(); Route::get('/home', 'HomeController@index'); 中间的一行代码 Route::auth(); 就是 Auth 系统自动注入的路由配置,我们不用深究,我们的注意力主要集中头三行和最后一行代码上。 ##绝对类名 Laravel 5 全面引入了 psr-4 命名空间标准:命名空间和实际文件所在的文件夹层级一致,文件夹首字母大写即为此文件的约定命名空间。举个例子:learnlaravel5/app/Http/Controllers/HomeController.php 的绝对类名为:\App\Http\Controllers\HomeController

python命名空间

有些话、适合烂在心里 提交于 2020-02-10 01:30:40
1. 命名空间,不仅仅在python中有,在多数解释性语言中都有这个概念。( 暂时不确定 是不是所有的语言里都有) php、xml、c++、java、c#...... 定义命名空间的意义 :避免标识符发生重名冲突; 命名空间的使用 : 解析器组织、重用代码; 2. python中的命名空间 python的命名空间被定义为四层: "LEGB" L:  local;   表示该标识符在一个函数定义中,而且 在这个函数里面没有再包含函数的定义。 E:  enclosing function;  表示在一个函数定义中,但这个函数里面还包含有函数的定义,其实L层和E层只是相对的。 G:  global;  是指一个模块的命名空间,也就是说在一个.py文件中定义的标识符,但不在一个函数中。 B:  builtin;   是指python解释器启动时就已经具有的命名空间,之所以叫builtin是因为在python解释器启动时会自动    载入__builtin__模块,这个模块中的list、str等内置函数的就处于B层的命名空间中。 python解释器每次解释python代码的时候会按照LEGB的顺序来查找表示符;标识符的结果呢会以第一个找到的为主。 3. 三条规则 第 一,赋值(包括显式赋值和隐式赋值)产生标识符,赋值的地点决定标识符所处的命名空间。 第二,函数定义(包括def和lambda

ThinkPHP控制器

我们两清 提交于 2020-02-09 06:21:05
ThinkPHP控制器Controller 1、什么是控制器 在MVC框架中,其核心就是C(Controller)控制器。主要用于接收用户请求,处理业务逻辑。 2、控制器的定义 在一个ThinkPHP系统中,其可以分为多个模块(如Home前台模块,Admin后台模块等),我们在定义控制器时都需要定义在相应的模块内。定义规范如下: 控制器名称(首字母大写)+Controller(关键词)+.class.php(类文件后缀) 如:IndexController.class.php NewsController.class.php 3、编写控制器代码 ① 定义命名空间 命名空间就是为了解决php中类、函数以及常量重名问题。 namespace 空间名称 特别说明: 命名空间的空间名称与路径是没有任何关系的,但是在ThinkPHP框架中其与ThinkPHP框架的路径是想对应的,谨记!!! ② 引入核心控制器 use 命名空间 use Think\Controller; ③ 定义自定义控制器,如下图所示: 4、控制器的访问规则(URL调度模式) 在ThinkPHP框架中,一共有4中URL调度模式,默认使用的是第2中,PATHINFO调度模式: http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法) ① 普通调度模式

PSR规范

蹲街弑〆低调 提交于 2020-02-06 03:16:16
04是自动加载的规范, 12是代码规范, 3是日志规范,后面的数字就是升级版 PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。 项目的目的在于:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。 目前已表决通过了 6 套标准,已经得到大部分 PHP 框架的支持和认可。 1.PSR-0 自动加载规范,此规范已被启用-本规范已于2014年10月21日被标记为弃用,目前新的替代规范为【PSR-4】 本文是为自动加载器实现通用自动加载所需要遵循的编码规范 一个标准的命名空间与类名称的定义必须符合以下结构:<Vendor Name> (ClassName) 其中Vendor Name 为每个命名空间都必须要有的一个顶级命名空间名 需要的话,每个命名空间下可以拥有多个子命名空间 当根据完整的命名空间名从文件系统中载入类文件时,每个命名空间之间的分隔符都会被转换成文件夹路径分隔符 类命名中的每个_字符也会被转换成文件夹路径分隔符,而命名空间中的_字符则是无特殊含义的。 当从文件系统中载入标准的命名空间或类时,都将添加.php为目标文件后缀 组织名称(Vendor

php命名空间

瘦欲@ 提交于 2020-01-30 18:06:53
阅读目录 命名空间的介绍 命名空间的三种访问方式 命名空间的介绍 在一个php文件中声明两个相同的函数名的函数, 会报致命错误 <?php function getmsg(){ echo '123'; } function getmsg(){ echo '456'; } Fatal error: Cannot redeclare getmsg() (previously declared in E:\phpstudy_pro\WWW\project1\public\test.php:10) in E:\phpstudy_pro\WWW\project1\public\test.php on line 15 这时候我们可以使用命名空间来解决这个问题 <?php namespace ms1; function getmsg(){ echo '123'; } namespace ms2; function getmsg(){ echo '456'; }getmsg(); 这样就相当于分别在两个空间里定义相同名的函数 但是直接调用getmsg函数的时候会直接当前空间下离它最近的函数: 456 如果要访问第一个名称空间中的函数则: <?php namespace ms1; function getmsg(){ echo '123'; } namespace ms2; function

详细解读PHP的命名空间

此生再无相见时 提交于 2020-01-28 23:48:26
PHP培训 一:命名空间里的namespace关键字和__NAMESPACE__常量的运用 PHP支持两种抽象的访问当前命名空间内部元素的方法,__NAMESPACE__ 魔术常量和namespace关键字。 常量__NAMESPACE__会储存当前命名空间的名字字符串,如果当前是全局非命名空间,则保存的是空字符串。 关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。如果不在当前是全局环境的话,那么显式访问的就是全局限定的元素。 __NAMESPACE__实例: <?php namespace Index\Name{ var_dump(__NAMESPACE__); //打印string(10) "Index\Name" function foo($classname){ return __NAMESPACE__.'\\'.$classname; } } namespace{ var_dump(__NAMESPACE__); //打印string(0) "" var_dump(Index\Name\foo('ceshi')); //打印string(16) "Index\Name\ceshi" } ?> namespace实例: <?php namespace Index\Name\Index{ function foo(

浅析PHP类的自动加载和命名空间

痴心易碎 提交于 2020-01-27 03:20:53
php是使用 require(require_once) 和 include(include_once) 关键字加载类文件。但是在实际的开发工程中我们基本上不会去使用这些关键字去加载类。 因为这样做会使得代码的维护相当的困难。实际的开发中我们会在文件的开始位置用use关键字使用类,然后直接new这个类就可以了. 至于类是怎么加载的,一般都是框架或者composer去实现的。 <?php use Illuminate\Container\Container; $container = new Container(); 自动加载 小说网站 https://www.198200.com 我们可以通过一段 伪代码 来模拟一下在类的实例化工程中类是如何工作的 function instance($class) { // 如果类已加载则返回其实例 if (class_exists($class, false)) { return new $class(); } // 查看 autoload 函数是否被用户定义 if (function_exists('__autoload')) { __autoload($class); // 最后一次加载类的机会 } // 再次检查类是否存在 if (class_exists($class, false)) { return new $class(); }

Zend Framework学习之Zend_Session

无人久伴 提交于 2020-01-22 09:31:30
会话命名空间 实现会话 代码: <?php require_once "Zend/Session/Namespace.php"; $myNamespace = new Zend_Session_Namespace('Myspace'); if(isset($myNamespace->numberOfPageRequests)) { $myNamespace->numberOfPageRequests++; }else{ $myNamespace->numberOfPageRequests = 1; } echo "用户的浏览次数为:"; echo "<font size=\"6\" color=\"#ff0000\">"; echo $myNamespace->numberOfPageRequests; echo "</font>次"; 结果: 用户的浏览次数为: 10 次 遍历会话命名空间 代码: <?php require_once "Zend/Session/Namespace.php"; $myNamespace = new Zend_Session_Namespace('Myspace'); $myNamespace->webhost = "127.0.0.1"; $myNamespace->hostname = "localhost"; $myNamespace-

PHP学习之路 PSR-0规范

。_饼干妹妹 提交于 2020-01-18 04:28:30
1、PHP的命名空间必须与绝对路径一致 2、类名的首字母必须大写 3、除了入口文件之外,其他".php"必须只有一个类,不能有执行、可执行的代码 开发符合PSR-0规范的基础框架 1、全部使用命名空间 2、所有PHP文件必须自动载入,不能有include/require 3、单一入口(就是index.php) 来源: CSDN 作者: 数学太陡 链接: https://blog.csdn.net/qq_28137309/article/details/103943319