PHP中的use关键字概述,PHPuse关键字概述
PHP中的use关键字概述,PHPuse关键字概述
很多开源系统如osCommerce框架中,都会在其源码中找到use这个关键字,如osCommerce框架中就在index.php文件中出现了这段源码:
use osCommerce\OM\Core\Autoloader; use osCommerce\OM\Core\OSCOM;
其实,php的use关键字是自php5.3以上版本引入的。它的作用是给一个外部引用起别名。这是命名空间的一个重要特性,它同基于unix的文件系统的为文件或目录创建连接标志相类似。
PHP命名空间支持三种别名方式(或者说引用):
1、为一个类取别名
2、为一个接口取别名
3、为一个命名空间取别名
这三种方式都是用 use 关键字来完成。下面是三种别名的分别举例:
//Example #1 importing/aliasing with the use operator
<?php namespacefoo; useMy\Full\ClassnameasAnother; //thisisthesameasuseMy\Full\NSnameasNSname useMy\Full\NSname; //importingaglobalclass useArrayObject; $obj=newnamespace\Another;//instantiatesobjectofclassfoo\Another $obj=newAnother;//instantiatesobjectofclassMy\Full\Classname NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func $a=newArrayObject(array(1));//instantiatesobjectofclassArrayObject //withoutthe"useArrayObject"wewouldinstantiateanobjectofclassfoo\ArrayObject ?>
注意的一点是,对于已命名的名字,全称就包含了分隔符,比如 Foo\Bar,而不能用FooBar,而“\Foo\Bar”这个头部的"\"是没必要的,也不建议这样写。引入名必须是全称,并且跟当前命名空间没有程序上的关联。
PHP也可以在同一行上申明多个,等同于上面的写法
<?php useMy\Full\ClassnameasAnother,My\Full\NSname; $obj=newAnother;//instantiatesobjectofclassMy\Full\Classname NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func ?>
还有值得一说的是,引入是在编译时执行的,因此,别名不会影响动态类,例如:
<?php useMy\Full\ClassnameasAnother,My\Full\NSname; $obj=newAnother;//instantiatesobjectofclassMy\Full\Classname $a = 'Another'; $obj = New $a; // instantiates object of class Another ?>
这里由于给变量$a 赋值了 'Another',编译的时候,就将$a 定位到 Classname 了。
更详细的用法读者可以查阅php手册或关注本站后续相关文章。
1. namespace Zend\Http\PhpEnvironment;
这句代码定义了一个命名空间,你可以理解为定义一个名称为 Zend\Http\PhpEnvironment 的域名。
在定义了之后,下面所申明的class, interface, const等都是在申明的这个“域”里面的。当引用一个申明了命名空间的包含文件,想要调用这个里面的东西,那就必须:
调整当前脚本也到这个域名里,否则,就得用namesapce的全称。
比如,inc.php 文件:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定义了一个类
则其他文件调用时:
// 访问Foo的第一种方法,用全称
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 访问Foo的第二种方法
namespace Foo; // 调整当前脚本到Foo这个ns域,而且namespace申明必须在第一句
require 'inc.php';
$foo = new Bar();
2. use关键字目的是使用ns的别名:
比如说,上面的
// 访问Foo的第一种方法,用全称
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
用uses后,写法如下:
use \Zend\Http\PhpEnvironment as pe; //定义别名
$foo = new \pe\Bar(); //用短的别名来代替原来的
如果省略后面的as ....,那么,就可以直接用最后一节的文字来代替,比如,上面的:
use \Zend\Http\PhpEnvironment; //定义别名
$foo = new \PhpEnvironment\Bar(); //用短的别名来代替原来的
================================================
php官方手册中的相关内容:
在PHP中,namespace命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。
PHP 命名空间支持有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名, 别名通过操作符 use 来实现。...余下全文>>
关键字就是棋盘上的棋子,你只可以用,不能改也不能自个往里加
你想想我把卒子当车使,再摆四个马跟你下,你干吗?
所以PHP也不干!
不知你是否明白?
参考资料:www.gooddou.cn

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
