1. 程式人生 > >PHP名稱空間自動載入之composer實現方式

PHP名稱空間自動載入之composer實現方式

必備條件:你已經安裝了composer;

專案構建完成之後的檔案結構:


S1:

在專案根目錄建立composer.json檔案,寫入程式碼

{
    "type": "project",
    "autoload": {
        "psr-4": {
            "Admin\\": "admin/"
        }
    }
}

S2:

在專案根目錄開啟命令,寫入命令

composer update

等待執行完成。

安裝成功後,會在專案根目錄下新建一個"/vendor/"資料夾。

S3:

說明:使用之前需要require一下"/vendor/autoload.php"檔案。


$autoLoadFilePath = dirname($_SERVER['DOCUMENT_ROOT']).DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';
require_once $autoLoadFilePath;


說明:我的入口檔案在根目錄下的"\public\"資料夾下。

S4:

在"/admin/"目錄下新建test.php檔案,檔案內容如下

<?php

namespace Admin;

class test
{
    public function sayHi()
    {
        echo 'hi';
    }
}


在"/public/"目錄下新建index.php檔案,檔案內容如下
<?php

//裝載自動載入函式
$autoLoadFilePath = dirname($_SERVER['DOCUMENT_ROOT']).DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';
require_once $autoLoadFilePath;

$test = new \Admin\test();
$test->sayHi();

S5:配置apache,訪問路徑,得到如下

成功!

相關推薦

PHP名稱空間自動載入composer實現方式

必備條件:你已經安裝了composer; 專案構建完成之後的檔案結構: S1: 在專案根目錄建立composer.json檔案,寫入程式碼 { "type": "project", "autoload": { "psr-4": {

thinkphp5名稱空間+自動載入

1.composer NS \  psr0 不要求 2.psr0裡面最後一個\之後的類名中_會轉換成路徑分隔符 3.psr0有更深的目錄結構 4類自動載入對應的目標檔案查詢方式 Loader::autoload  自動載入註冊函式 Loader::findFile 載入檔案查

PHP類的自動載入名稱空間及use的理解

今天寫一個demo,遇到一個問題,平時框架用多了,下意識的就以為use就能引入類,導致一直跑不成功,後來才意識到use與引用類並不是一回事。use只是指定了要使用哪個名稱空間下的類,但是並不會引入類,類的引用還是需要使用include或require。這裡記錄一

php名稱空間namespace自動載入

php的名稱空間僅僅提供了一個邏輯上的類的隔離空間,我們在引用類時,仍要自己實現自動載入。思路就是使用一個未引入的類時,php自動觸發spl_autoload_register這個方法,然後就會根據名稱空間的結構解析為檔案路徑,引入相關的類檔案啦。 下面僅僅編

PHP 名稱空間自動載入機制介紹,spl_autoload_register, __autoload 函式

include 和 require 是PHP中引入檔案的兩個基本方法。在小規模開發中直接使用 include 和 require 沒喲什麼不妥,但在大型專案中會造成大量的 include 和 require 堆積。這樣的程式碼既不優雅,執行效率也很低,而且維護起來也相當困難。 為了解決這個問題,部分框

淺析PHP類的自動載入名稱空間

php是使用require(require_once)和include(include_once)關鍵字載入類檔案。但是在實際的開發工程中我們基本上不會去使用這些關鍵字去載入類。 因為這樣做會使得程式碼的維護相當的困難。實際的開發中我們會在檔案的開始位置用use關鍵字使用類,然後直接new這個類就可以了. 至

PHP類的自動載入機制實現方法分析

這篇文章主要介紹了PHP類的自動載入機制實現方法,結合例項形式分析了__autoload方法進行類自動載入操作的相關實現技巧與使用注意事項,需要的朋友可以參考下。 本文例項講述了PHP類的自動載入機制實現方法。分享給大家供大家參考,具體如下: Test1.class.php <?php cl

PHP名稱空間解析規則

1.對完全限定名的類、函式和常量,在編譯時解析,如類\A\B解析為類A\B。 2.所有的非限定名稱和限定名稱,根據當前的匯入規則在編譯時進行轉換。假設名稱空間A\B\C被匯入為Z,那麼呼叫Z\d()會轉換為A\B\C\d()。 3.在名稱空間內,沒有根據匯入規則轉換的限定名,會在其前面加

PHP名稱空間匯入、別名

魔術常量__NAMESPACE__返回當前名稱空間的名稱,如果是在全域性範圍中則返回空字串。關鍵字namespace除了可以定義名稱空間,還可以用來訪問當前名稱空間或子名稱空間中的元素。 為了編碼方便,PHP允許使用use關鍵字匯入外部的完全限定名稱,並可選擇使用as關鍵字為其建立別名。PH

PHP名稱空間簡介

PHP從5.3起支援名稱空間,PHP中的名稱空間用來解決使用者編寫的程式碼與PHP內部的類/函式/常量或第三方類/函式/常量之間的名字衝突的問題,還可以為為很長的識別符號名稱建立一個別名,提高原始碼的可讀性。 名稱空間可以將相關的類、函式和常量組合到一起。 名稱空間通過namespace關鍵

php 名稱空間(namespace)

php名稱空間 版本(PHP 5 >= 5.3.0, PHP 7)   一. 名稱空間概述 什麼是名稱空間?從廣義上來說,名稱空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了名稱空間

PHP的類自動載入機制

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PHP什麼是自動載入

what is 自動載入? 或許你已經對自動載入有所瞭解。簡單描述一下:自動載入就是我們在new一個class的時候,不需要手動去寫require來匯入這個class.php檔案,程式自動幫我們載入匯入進來。這是php5.1.2(好像是)版本新加入一個功能,他解放了程式設計師的雙手,不

關於php名稱空間的理解

什麼是名稱空間以及如何定義名稱空間 一般情況向,在一個php程式原始碼檔案或同一個請求中是不允許有兩個以上相同名稱的類名、常量名或者函式名的,這樣的話,程式在執行的時候就會報錯。但是,在很多實際情況下,我們是無法避免在同一個檔案下有兩個以上相同名稱的類名、常量名或者函式名的。這種情況下就需要引入名

PHP名稱空間中使用全域性核心類報錯not found

本博主轉載前必先親自考證,深惡痛絕百度CP之流,有問題請與我聯絡。 當一個php檔案聲明瞭名稱空間,則此檔案中使用類時,必須指定是在哪個名稱空間中,否則就會報錯,原因是在當前空間中找不到這個類,PHP核心類也會有這個問題,示例: namespace TestExc; try { t

PHP-名稱空間-筆記

名稱空間 名稱空間可以理解為windows下的資料夾,在同一資料夾下的檔案時不能同名的,但是在不同的資料夾下時可以出現同名夫人檔案 錯誤程式碼: <?php //同一名稱空間下出現相同命名的類,這是錯誤的 class Cat { } class

PHP類的自動載入

__autoload 嘗試載入未定義的類,PHP7.2棄用此函式。假定同一目錄下有foo.php和test.php兩個檔案。 PHP5.3以前__autoload函式丟擲的異常不能被catch語句塊捕獲並會導致一個致命錯誤。PHP5.3起能夠thrown自定義的異常,隨後

spring自動載入,使用實現類無法載入,使用介面卻可以的原因

參考: Case 請看下面的IOC例項: 1)AaaService實現AaaaInterface介面 2)在BaaService中Autowired AaaService Code AaaInterface package com.test; public

PHP類的自動載入以及自定義自動載入函式

類的自動載入函式是個魔術方法,這個函式不需要呼叫 是自動會載入呼叫的,PHP體統內部提供的方法,__aotuload(),使用形式為: <?php function __autoload($className){ require_once "./".$classNa

php類檔案自動載入(autoload)

php實現類檔案自動載入有兩種辦法: 魔術方法:__autoload(); SPL標準庫提供的spl_autoload_register(); 一、__autoload() __autoload()是php中的一個魔術方法,在程式碼中當呼叫不存在的