php教程 PHP开发 Zend Framework 튜토리얼의 자동 로딩 사용법에 대한 자세한 설명

Zend Framework 튜토리얼의 자동 로딩 사용법에 대한 자세한 설명

Jan 03, 2017 pm 12:47 PM
zend framework

이 기사의 예에서는 Zend Framework 튜토리얼의 자동 로딩 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

1. 개요

자동 로딩은 PHP 코드를 수동으로 작성할 필요가 없는 메커니즘입니다. » PHP 수동 자동 로딩을 참조하세요. 일단 오토로더가 정의되면 정의되지 않은 클래스나 인터페이스를 사용하려고 할 경우 자동으로 호출됩니다.

자동 로딩을 사용하면 프로젝트에서 클래스가 어디에 저장되어 있는지 걱정할 필요가 없습니다. 잘 정의된 오토로더를 사용하면 현재 클래스 파일을 기준으로 클래스 파일의 위치를 ​​생각할 필요가 없습니다. 클래스를 사용하기만 하면 오토로더가 자동으로 파일을 찾습니다.

또한 자동 로딩을 통해 한 번만 로드되어 성능이 향상되므로 require_once() 대신 사용할 수 있습니다.

Zend Framework는 자동 로딩 사용을 권장하며 코드 라이브러리와 애플리케이션 코드를 자동으로 로드하는 다양한 도구를 제공합니다. 다음은 이러한 도구와 이를 효과적으로 사용하는 방법을 살펴보겠습니다.

자동 로딩 구현 규칙

클래스 명명 규칙

Zend Framework는 클래스 이름과 파일 시스템 간의 1:1 관계인 PEAR의 아이디어를 차용합니다. 간단히 말해서 디렉터리 구분 기호를 밑줄 문자("_")로 바꾸어 파일 경로를 나타내고 접미사 ".php"를 추가하면 됩니다. 예를 들어, "Foo_Bar_Baz" 클래스는 파일 시스템의 "Foo/Bar/Baz.php"에 해당합니다. 클래스의 위치가 PHP의 include_path를 통해 설정되었다고 가정하면, include_path에 설정된 경로를 기준으로 include() 및 require()를 통해 파일 이름을 찾을 수 있습니다.

또한 벤더명이나 프로젝트명을 접두사로 사용하는 것이 좋습니다. 이는 작성하는 모든 클래스에 공통 클래스 접두사가 있음을 의미합니다. 예를 들어 Zend Framework의 모든 코드에는 "Zend_"라는 접두사가 붙습니다. 이 명명 규칙은 명명 충돌을 방지하는 데 도움이 됩니다. ZendFramework에서는 "네임스페이스" 접두사를 자주 참조하므로 이를 PHP의 로컬 네임스페이스와 혼동하지 않도록 주의하십시오.

오토로더 디자인 규칙

Zend Framework는 주로 다음과 같은 목표와 디자인 요소를 제공하는 Zend_Loader_Autoloader를 통한 자동 로딩을 지원합니다.

네임스페이스 일치를 제공합니다. 클래스의 네임스페이스 접두사가 등록되지 않은 네임스페이스인 경우 FALSE가 반환됩니다.

자동 로더를 대체 자동 로더로 정의할 수 있습니다. 팀은 널리 분산되어 있거나 정의되지 않은 네임스페이스 접두사를 사용할 수 있으며, 이 경우 모든 네임스페이스 접두사와 일치하려고 시도합니다. 그러나 이 방법은 불필요한 조회가 발생할 수 있으므로 권장되지 않습니다.
오류 메시지 표시 억제를 허용합니다. 따라서 기본적으로 꺼져 있어야 합니다. 개발 단계에서 활성화할 수 있습니다.

자동 로딩을 맞춤 설정할 수 있습니다. 일부 개발자는 자동 로딩에 Zend_Loader::loadClass()를 사용하고 싶지 않지만 여전히 Zend Framework의 자동 로딩 메커니즘을 사용하고 싶어합니다. Zend_Loader_Autoloader를 사용하면 사용자 정의 자동 로딩을 사용할 수 있습니다.

SPL을 사용하여 콜백 체인을 자동으로 로드할 수 있습니다. 이것의 목적은 추가 자동 로더를 지정할 수 있도록 하는 것입니다.

2. 사용법:

일반적으로 필요한 사항을 포함 클래스에 도입한 다음 인스턴스화하기만 하면 됩니다. Zend_Loader_Autoloader가 채택한 싱글톤 모드로 인해 getInstance() 메서드를 사용하여 인스턴스를 얻을 수 있습니다.

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
로그인 후 복사

기본적으로 네임스페이스 접두사가 "Zend_" 또는 "ZendX_"인 모든 클래스를 로드할 수 있습니다. 단지 include_path가 지정되어 있는지 확인하세요.
다른 네임스페이스 접두사를 사용하고 싶으십니까? 가장 좋고 쉬운 방법은 RegisterNamespace() 메서드를 호출하는 것입니다. 단일 네임스페이스 접두사 또는 배열을 전달하여 이 작업을 수행할 수 있습니다.

require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Foo_');
$loader->registerNamespace(array('Foo_', 'Bar_'));
로그인 후 복사

또는 Zend_Loader_Autoloader를 "대체" 자동 로더로 사용할 수 있습니다. 즉, 정의 여부에 관계없이 네임스페이스가 정의되면 자동 로딩이 시도됩니다.

$loader->setFallbackAutoloader(true);
로그인 후 복사

(참고: 이 방법은 권장되지 않습니다. 사용하지 마십시오.)

Zend_Loader_Autoloader의 내부 구현에서는 Zend_Loader::loadClass()를 사용하여 클래스를 로드합니다. 이 메소드는 include()를 사용하여 지정된 클래스 파일을 로드하려고 시도합니다. include()는 부울 값을 반환하거나 성공하지 못한 경우 FALSE를 반환하고 PHP 경고도 표시합니다. 다음 문제가 발생할 수 있습니다.

display_errors가 활성화되면 경고가 출력에 포함됩니다.

구성한 error_reporting 수준에 따라 로그에 출력될 수도 있습니다.
이러한 오류 메시지는 다음과 같이 표시되지 않을 수 있습니다. (그러나 display_errors가 활성화되면 오류 로그가 항상 표시됩니다.)

$autoloader->suppressNotFoundWarnings(true);
로그인 후 복사

Zend 버전 선택 프레임워크

ZendFramework/
|-- 1.9.2/
|-- 라이브러리/
|-- ZendFramework-1.9.1-minimal/
| /
|-- 1.8.4PL1/
|-- library/
|-- 1.8.4/
|-- library/
|-- ZendFramework-1.8.3 /
| |-- 도서관/
|-- 1.7.8/
|-- 도서관/
|-- 1.7.7/
| >|- - 1.7.6/
|-- library/

$autoloader->setZfPath($path, 'latest');
로그인 후 복사
$autoloader->setZfPath($path, '1.8');
로그인 후 복사
$autoloader->setZfPath($path, '1.7.7');
로그인 후 복사
구성 파일을 사용할 수도 있습니다

[production]
autoloaderZfPath = "path/to/ZendFramework"
autoloaderZfVersion = "1.7.7"
[qa]
autoloaderZfVersion = "1.8"
[development]
autoloaderZfVersion = "latest"
로그인 후 복사
오토로더 인터페이스

참고: 네임스페이스 접두사 및 PHP 네임스페이스

PHP5.3이 출시되었습니다. 이 버전에서 PHP는 이제 공식적으로 네임스페이스를 지원합니다.

然而,Zend Framework的命名空间和PHP 5.3的命名空间完全不同的。 Zend Framework中,提到的“命名空间”,是指一个类前缀。例如,所有的Zend Framework的类名称的前缀“Zend_”。 这是我们指定的“命名空间”。

在Zend Framework 2.0.0使用了原生的PHP命名空间。

自动加载器除了能够指定任意回调以外,Zend Framework还定义了一个需要自动加载类实现的接口Zend_Loader_Autoloader_Interface:

interface Zend_Loader_Autoloader_Interface
{
  public function autoload($class);
}
로그인 후 복사

如果您希望在Zend Framework中使用自定义的自动加载器,可以使用 Zend_Loader_Autoloader的 pushAutoloader()和unshiftAutoloader()方法。
通过这些方法将在Zend Framework的内部自动装载器之后追加或之前使用自定义的加载器。

每个方法接受一个可选的第二个参数,类的命名空间前缀。自动加载器只查找给定的类前缀。如果不是指定的类前缀,将跳过自动加载器 , 这可能是一种性能改进方式。

当使用这个接口时,你需要传递类实例到Zend_Loader_Autoloader类的pushAutoloader()和unshiftAutoloader()方法,具体如下:

// Append function 'my_autoloader' to the stack,
// to manage classes with the prefix 'My_':
$loader->pushAutoloader('my_autoloader', 'My_');
// Prepend static method Foo_Loader::autoload() to the stack,
// to manage classes with the prefix 'Foo_':
$loader->unshiftAutoloader(array('Foo_Loader', 'autoload'), 'Foo_');
// Assume Foo_Autoloader implements Zend_Loader_Autoloader_Interface:
$foo = new Foo_Autoloader();
$autoloader->pushAutoloader($foo, 'Foo_');
로그인 후 복사


Zend_Loader_Autoloader的相关方法

Zend Framework教程之Autoloading用法详解

Zend Framework教程之Autoloading用法详解


希望本文所述对大家PHP程序设计有所帮助。

更多Zend Framework教程之Autoloading用法详解相关文章请关注PHP中文网!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP와 함께 Zend Framework 사용: 빠른 시작 가이드 PHP와 함께 Zend Framework 사용: 빠른 시작 가이드 Jun 21, 2023 am 08:58 AM

PHP와 함께 ZendFramework 사용: 빠른 시작 가이드 ZendFramework는 강력하고 쉽게 확장 가능한 오픈 소스 PHP 기반 웹 애플리케이션 프레임워크입니다. ZendFramework에는 효율적인 웹 애플리케이션을 구축하는 데 도움이 되는 유용한 구성 요소가 많이 포함되어 있습니다. 이 기사에서는 PHP에서 ZendFramework를 사용하여 빠르게 시작하는 방법을 소개합니다. ZendFramewo 설치

Zend Framework 미들웨어를 통한 효율적인 데이터베이스 쿼리 Zend Framework 미들웨어를 통한 효율적인 데이터베이스 쿼리 Jul 28, 2023 pm 01:13 PM

ZendFramework 미들웨어를 통한 효율적인 데이터베이스 쿼리 구현 소개 개발 과정에서 데이터베이스 쿼리는 피할 수 없는 부분입니다. 효율적인 데이터베이스 쿼리는 시스템 성능과 사용자 경험을 크게 향상시킬 수 있습니다. ZendFramework는 강력한 데이터베이스 작업 기능을 갖춘 널리 사용되는 PHP 프레임워크입니다. 이 기사에서는 ZendFramework 미들웨어를 통해 효율적인 데이터베이스 쿼리를 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. ZendF 이해

Zend Framework 미들웨어: 전체 텍스트 검색 및 페이징 기능 구현 Zend Framework 미들웨어: 전체 텍스트 검색 및 페이징 기능 구현 Jul 30, 2023 pm 08:49 PM

ZendFramework는 개발자가 확장 가능한 고성능 PHP 애플리케이션을 신속하게 구축하는 데 도움이 되는 강력한 개발 프레임워크입니다. 그 중 미들웨어는 ZendFramework의 중요한 개념으로, 전체 텍스트 검색 및 페이징 기능을 구현하는 데 도움을 줄 수 있습니다. 이 기사에서는 ZendFramework에서 미들웨어를 사용하여 이 두 가지 기능을 구현하는 방법을 소개하고 코드 예제를 제공합니다. 1. 전체 텍스트 검색 기능 전체 텍스트 검색은 최신 응용 프로그램의 일반적인 기능 중 하나입니다.

Zend Framework 미들웨어: 애플리케이션에 OAuth 및 OpenID 로그인 지원을 추가합니다. Zend Framework 미들웨어: 애플리케이션에 OAuth 및 OpenID 로그인 지원을 추가합니다. Jul 28, 2023 pm 01:09 PM

ZendFramework 미들웨어: 애플리케이션에 OAuth 및 OpenID 로그인 지원 추가 사용자 인증은 오늘날의 인터넷 애플리케이션에서 중요한 기능입니다. 더 나은 사용자 경험과 보안을 제공하기 위해 많은 애플리케이션은 OAuth 및 OpenID와 같은 타사 로그인 서비스를 통합하기로 선택합니다. ZendFramework에서는 미들웨어를 통해 애플리케이션에 OAuth 및 OpenID 로그인 지원을 쉽게 추가할 수 있습니다. 먼저 Ze를 설치해야 합니다.

Zend Framework 미들웨어: 이메일 알림 및 메시지 푸시 기능 제공 Zend Framework 미들웨어: 이메일 알림 및 메시지 푸시 기능 제공 Jul 29, 2023 pm 08:29 PM

ZendFramework 미들웨어: 이메일 알림 및 메시지 푸시 기능 제공 소개: 인터넷의 발전과 스마트폰의 인기로 인해 이메일 알림 및 메시지 푸시는 현대 소프트웨어 개발에서 일반적으로 사용되는 기능 중 하나가 되었습니다. ZendFramework에서는 미들웨어를 사용하여 이메일 알림 및 메시지 푸시 기능을 구현할 수 있습니다. 이 기사에서는 ZendFramework 미들웨어를 사용하여 이메일 알림 및 메시지 푸시를 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 준비 작업

Zend Framework 미들웨어: 웹 애플리케이션에 소셜 로그인 기능 추가 Zend Framework 미들웨어: 웹 애플리케이션에 소셜 로그인 기능 추가 Jul 28, 2023 pm 07:21 PM

ZendFramework는 확장 가능한 웹 애플리케이션을 구축하기 위한 많은 강력한 도구와 구성 요소를 제공하는 PHP 기반의 오픈 소스 프레임워크입니다. 이 기사에서는 ZendFramework의 미들웨어를 사용하여 웹 애플리케이션에 소셜 로그인 기능을 추가하는 방법을 소개합니다. 미들웨어는 요청이 애플리케이션에 들어오기 전이나 후에 실행되는 코드입니다. 이를 통해 개발자는 요청 처리 프로세스를 사용자 정의하고 확장할 수 있습니다. ZendFramework는 유연한 방법을 제공합니다.

Zend Framework 미들웨어: 애플리케이션에 Alipay 및 WeChat 결제 기능 추가 Zend Framework 미들웨어: 애플리케이션에 Alipay 및 WeChat 결제 기능 추가 Jul 28, 2023 pm 08:01 PM

ZendFramework 미들웨어: 애플리케이션에 Alipay 및 WeChat 결제 기능 추가 소개: 모바일 결제의 인기로 인해 Alipay 및 WeChat 결제는 많은 애플리케이션에서 필수적인 결제 방법이 되었습니다. 이 기사에서는 ZendFramework 미들웨어를 사용하여 Alipay 및 WeChat 결제 기능을 애플리케이션에 추가하는 방법을 소개합니다. 이 기사를 공부하면 미들웨어를 사용하여 결제 프로세스를 단순화하고 실제 프로젝트에 적용하는 방법을 배울 수 있습니다. 1. 준비 시작하기 전에,

CodeIgniter와 Zend Framework: ERP 시스템 개발에 어떤 프레임워크가 더 좋습니까? CodeIgniter와 Zend Framework: ERP 시스템 개발에 어떤 프레임워크가 더 좋습니까? Jun 19, 2023 am 08:53 AM

ERP 시스템을 개발하기로 결정했다면 적합한 프레임워크를 선택하는 것이 중요합니다. 여기서는 ERP 시스템 개발에 더 적합한 프레임워크를 찾는 데 도움이 되도록 두 가지 PHP 프레임워크인 CodeIgniter와 ZendFramework를 비교해 보겠습니다. CodeIgniter와 ZendFramework는 널리 사용되는 PHP 프레임워크입니다. 둘 다 많은 기능을 제공하며 확장 및 유지 관리가 가능합니다. 그러나 이 두 프레임워크는 일부 측면에서 크게 다르며 일부 애플리케이션에 더 적합합니다.

See all articles