亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用命名空間加載類的正確方法是什么?這樣我就不必在每個文件中包含自動加載?

使用命名空間加載類的正確方法是什么?這樣我就不必在每個文件中包含自動加載?

PHP
白板的微信 2023-07-07 10:48:45
您好,我有一項任務要做,即按名稱空間對類進行分類。我的要求是加載類而不包含 autoload.php 的 require 關鍵字。<?phpnamespace classes;class test {public function getPrint(){    echo "Hello";}}這是帶有命名空間的類。這是類函數的代碼。require_once 'classes/autoload.php';use classes\test2;$dt = new test();$dt2 = new test2();$dt->getPrint();echo $dt2->Okay();我正在自動加載課程。我的問題是使用以下方式加載類require_once 'classes/autoload.php';這條線。我必須在每個代碼文件中使用這一行來加載類。加載類的正確方法是什么。所以我不必包括require_once 'classes/autoload.php';每個文件中都有這個嗎?
查看完整描述

2 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

通常的工作方式是使用每個請求都會經過的一個引導文件。這通常還需要將路由移至 PHP 代碼中;即,您通常不會example.com/foo/bar.php簡單地調用 file foo/bar.php,而是使用漂亮的 URL(例如 )example.com/foo/bar,然后在 PHP 代碼中找出foo/bar確切的含義以及它應該執行的操作(盡管這是相當可選的,由您決定)。


首先,您設置一個.htacess這樣的文件,或者在您的 Web 服務器配置文件中添加等效的配置:


RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ bootstrap.php

這會導致您的 Web 服務器調用bootstrap.php其文件實際上不存在的任何和所有請求(即css/style.css仍按原樣提供服務,但foo/bar不是實際文件,而是會調用bootstrap.php)。


然后,bootstrap.php您需要require所有必要的文件,例如自動加載器,也許還有配置文件,然后運行您想要的任何類、函數或文件:


<?php


require_once 'classes/autoload.php';


$request = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

require "$request.php";

上面是獲取請求的 URI(例如/foo/bar)并將其用于requirePHP 文件的簡單示例。這是非常幼稚的并且有潛在危險,因此您需要在實際使用中進行一些更多的自定義處理。


查看完整回答
反對 回復 2023-07-07
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

您可以創建一個需要您要使用的所有其他文件的文件,包括自動加載:


<?php


require_once('classes/autoload.php');

require_once('file1.php');

require_once('file2.php');

...

然后您就不需要要求自動加載,因為文件已經附加在它后面。


查看完整回答
反對 回復 2023-07-07
  • 2 回答
  • 0 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號