① php 的use 命名空間 是什麼意思
有點類似於 java 中的包機制,用來解決重名問題的,每一個命名空間都是獨立的
給你舉個例子吧,比如我現在想寫兩個類,名字都叫 Action
<?php
namespaceA;//定義命名空間
classAction{
//..
}
namespaceB;//定義第二個命名空間
classAction{
//..
}
use 關鍵字用於導入某個命名空間下的類, 如果我在B空間內想使用A空間中的Action類,就需要導入這個類才能使用(當然也可以指明空間前綴來使用)
namespaceB;
//在本空間中需要使用A空間中的Action類,使用use導入
useAAction;//導入,如果本空間中也有一個Action會出現錯誤,因為類重名了
useAActionasA_Action;//通過取別名的方式解決
$var=newA_Action;
② thinkphp 命名空間什麼情況下使用,use後面載入什麼
命名空間其實只是為了載入文件更方便,tp的自動載入機制使用了它。
use 是繼承類使用的關鍵詞,當載入父類時,tp會更加use後面的命名空間查找對應的文件。tp會在多個目錄進行查找,具體的可以查看tp文檔的自動載入機制。
③ 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命名空間 use使用的問題:
命名空間是運行時解析的。use就相當於一種聲明,並不解析和載入。在使用時就可以自動載入進來,那麼這里你就可以理解為把db這個類庫導入進來了,所以可以正常使用。
⑤ php 命名空間函數和類中不能使用use嗎
public 表示全局,類內部外部子類都可以訪問;
private表示私有的,只有本類內部可以使用;
protected表示受保護的,只有本類或子類或父類中可以訪問;
當實例化對象時,在外部只能使用其公共方法。不能使用protected和private方法。
而protected方法當子類繼承時,可以調用父類的protected方法。或者在本類中使用,
⑥ php use php namespace 到底是怎麼一回事
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 laravel框架 namespace和use到什麼意思下面是官方給出的例子,namespace命名有什麼規定嗎
namespace App\Http\Controllers;
這句話 是表明當前的類是屬於App\Http\Controllers這個命名空間的
而use App\Http\Controllers\Controller
這句話 是說要使用App\Http\Controllers這個命名空間下的Controller這個類
⑧ php7使用use引入命名空間提示語法錯誤
我也遇到了這個問題,我是這樣解決的,我伺服器裝了5.2和7.2兩個版本,可能兩者有沖突,5.2不支持命名空間,不支持use和namespace,解決辦法就是卸載5.2版本!!!
⑨ 請教 命名空間引用 use的用法
您好,很高興為您解答。
namespace(以下簡稱ns)。在定義了一個ns之後,下面所申明的class、interface、const(不包含variable)都是在申明的ns這個「域」裡面的。當引用一個申明了ns的包含文件,想要調用這個ns裡面的東西,那必須調整當前腳本也到此ns域,否則就得用全稱()包含ns全稱):
//inc.php
namespaceFoo;
classBar{}
//訪問Foo的第一種方法,用全稱
require'inc.php';
$foo=newFooBar();
//訪問Foo的第二種方法
namespaceFoo;//調整當前腳本到Foo這個ns域,而且namespace申明必須在第一句
require'inc.php';
$foo=newBar();
se關鍵字目的是使用ns的別名:
//比如
useAVeryLongNamespaceasNs;
//這樣就可以用Ns來代替A/Very/Long/Namespace這個ns下定義的東西
$foo=newNsFoo();
但是在一些開源項目裡面經常會看到use NsComponent這樣的用法,沒有用as,這讓我以前一直在思考use是否還有第二種用法,糟糕的是php的文檔裡面也沒有對此用法有描述,只能靠猜測,後來仔細想過這個問題,得出一個比較靠譜的結論是use可以省略as以及後面的別名而直接把ns最後一個節點的名字當作別名,感覺是不是很像ln -s命令的用法呢:
[php]viewplain
//第三種用法
require'inc.php';
useFooBar;//這樣Bar就等於FooBar了
$foo=newBar();
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
⑩ php子類怎麼使用父類的use
你指的是導入命名空間的語法 use?
那不存在父類子類的說法。use只是將另外一個命名空間的定義(類或函數等)導入到當前命名空間使用。
每個文件(如果一個文件有多個命名空間,那每個命名空間導入一次)使用該語法導入一次,就可以一正常使用了。
如果一個文件里同時定義了兩個類,同時只有一個命名空間,那在命名空間後導入一次就可以在兩個類里同時使用了
PHP: 命名空間