이 글은 php자동 로딩메커니즘에 대한 자세한 분석과 소개입니다. 필요한 친구들은 참고하시면 됩니다
1. php
에서 자동 로딩을 구현하는 방법 1. require_once , include_once수동으로 로드하세요. 2. 자동 로드를 위해 자동 로드 사용
3. 자동 로드를 위해 spl의 자동 로드 사용
수동 로드 구현:
require_once 'a.php'; require_once 'b.php'; require_once 'c.php';
그런데 로딩할 파일이 많은데 이게 괜찮을까요? 10, 20 require_one 또는 그 이상을 작성해야 할 경우 어떻게 해야 합니까?
자동 로드 로딩 구현:
테스트 디렉토리에 다음 내용으로 in.php 파일을 생성합니다.
echo '我是test下面的in.php<br />';그런 다음 테스트 디렉터리에 다음 내용으로 loader.php를 만듭니다.
// 需要重载autoload方法,自定义包含类文件的路径 function autoload($classname) { $class_file = strtolower($classname).".php"; if (file_exists($class_file)){ require_once($class_file); } } @$test = new in(); // 执行到这里会输出 <SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">我是test下面的in.php</SPAN>
문제 없습니다. 작동했습니다! 로딩을 위해 다른 파일을 생성할 수도 있지만, 필요한 파일이 많아 디렉토리로 나누어야 할 경우 어떻게 해야 할까요?
function autoload($class_name) { $map = array( 'index' => './include/index.php', 'in' => './in.php' ); if (file_exists($map[$class_name]) && isset($map[$class_name])) { require_once $map[$class_name]; } } new index();
이 방법의 장점은 클래스 이름과 파일 경로가 매핑으로만 유지되므로 파일 구조가 변경될 때 클래스 이름을 수정할 필요가 없으며, 매핑에서 해당 항목만 수정하면 됩니다. 괜찮습니다.
spl의 자동 로드 로딩 구현:
spl의 자동 로드 기능 시리즈는 자동 로드 호출 스택을 사용하여 spl_autoload_register를 사용하여 다양한 애플리케이션 시나리오에서 여러 사용자 정의 자동 로드 기능을 등록할 수 있습니다.
• test 디렉터리 test 디렉터리 아래에 다음 내용으로 in.php를 생성합니다
<?php class in { public function index() { echo '我是test下面的in.php'; } } ?>
test 디렉터리 아래에 다음 내용으로 loader.php를 생성합니다
<?php set_include_path("/var/www/test/"); //这里需要将路径放入include spl_autoload("in"); //寻找/var/www/test/in.php $in = new in(); $in->index();
•spl_autoload_register는 SPL 자동 로드 함수 스택에 함수를 등록하고, loader.php
function AutoLoad($class){ if($class == 'in'){ require_once("/var/www/test/in.php"); } } spl_autoload_register('AutoLoad'); $a = new in(); $a->index();
•spl_autoload_register는 여러 사용자 정의 자동 로드 함수의 응용 프로그램을 등록합니다
먼저 mods 폴더를 생성합니다 test 디렉터리를 만들고 다음 내용으로 inmod.mod.php를 만듭니다.
<?php class inmod { function construct() { echo '我是mods下的in'; } }
그런 다음 test 디렉터리에 libs 폴더를 만들고 다음 내용으로 inlib.lib.php를 만듭니다.
<?php class inlib { function construct() { echo '我是libs下的in'; } }
마지막으로 다음 내용으로 테스트 디렉터리에 loader.php를 생성합니다
<?php class Loader { /** * 自动加载类 * @param $class 类名 */ public static function mods($class) { if($class){ set_include_path( "/var/www/test/mods/" ); spl_autoload_extensions( ".mod.php" ); spl_autoload( strtolower($class) ); } } public static function libs($class) { if($class){ set_include_path( "/var/www/test/libs/" ); spl_autoload_extensions( ".lib.php" ); spl_autoload( strtolower($class) ); } } } spl_autoload_register(array('Loader', 'mods')); spl_autoload_register(array('Loader', 'libs')); new inmod();//输出<SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 14px">我是mods下的in</SPAN> new inlib();//<SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">输出</SPAN><SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 14px">我是libs下的in</SPAN>
위 내용은 PHP 자동 로딩 메커니즘에 대한 심층 연구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

thesecrettokeepingAphp-poweredwebsiterunningsmoothlydlyUnderHeavyloadInvolvesEveralKeyStrategies : 1) ubstractOpCodeCachingWithOpCacheTecescripteExecutionTime, 2) usedatabasequeryCachingwithRedSendatabaseload, 3) LeverAgeCdnslikeCloudforforporerververforporporpin

Code는 코드가 더 명확하고 유지 관리하기 쉽기 때문에 의존성 주입 (DI)에 관심을 가져야합니다. 1) DI는 클래스를 분리하여 더 모듈 식으로 만들고, 2) 테스트 및 코드 유연성의 편의성을 향상시키고, 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하지만 성능 영향 및 순환 종속성에주의를 기울이십시오. 4) 모범 사례는 추상 인터페이스에 의존하여 느슨한 커플 링을 달성하는 것입니다.

예, PPAPPLICATIONISPOSSIBLEADESLESTION.1) INVERECINGUSINGAPCUTERODUCEDABASELOAD.2) INCODINCEDEXING, ENGICIONEQUERIES 및 CONNECTIONPOULING.3) 향상된 보드 바이어링, 플로 팅 포르코 잉을 피하는 최적화 된 APPCUTERODECEDATABASELOAD.2)

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경