이 기사의 예에서는 Zend Framework 튜토리얼에서 모델의 기본 규칙과 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
여기서는 Zend의 모델에 대해 이야기합니다. 실제로 Zend의 모델 처리는 매우 간단합니다.
주로 자동 로드 기능 때문입니다. 다른 프레임워크와 달리 모델에 대해 복잡한 기본 클래스가 정의됩니다.
모델을 정의하려면 모델 기본 클래스를 상속받아야 특정 기능을 사용할 수 있습니다.
모델이 Zend에 캡슐화되어 있지 않습니다.
이유는 아마도 모델이 주로 특정 비즈니스 로직과 관련되어 있고 과도한 캡슐화는 혼란만 가중시키기 때문일 것입니다.
Zend는 자동 로드 및 네임스페이스 기능을 사용하여 이 문제를 재치 있게 해결합니다.
zendframework 프로젝트 model_demo1 만들기
오류를 쉽게 보려면 다음과 같이 구성 파일 /model_demo1/application/configs/application.ini에서 오류 메시지 스위치를 켤 수 있습니다.
phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
다음으로 zend의 모델에 대해 간략하게 설명하겠습니다.
1. 기본 모델
표준 웹앱에는 다음과 같은 디렉터리가 있습니다. 애플리케이션/모델. 모델이 앱의 모델
을 저장하는 데 사용된다는 것을 쉽게 알 수 있습니다. 이 디렉터리의 장점은 모델 디렉터리에 특정 클래스를 정의한다는 것입니다. zend는 이를 자동으로 로드합니다. 물론 특정 규칙을 따라야 합니다. 전제는 다음과 같습니다.
예를 들어, zf 명령줄을 사용하여 Test라는 모델을 생성합니다
zf create model Test
만들기 /www/model_demo1/application/models/Test.php
프로젝트 프로필 업데이트 '/www/model_demo1/.zfproject.xml'
프로젝트 디렉토리를 새로 고치면 다음을 볼 수 있습니다. 다음 새로 추가된 사항은 File/model_demo1/application/models/Test.php
파일 내용은 다음과 같습니다.
<?php class Application_Model_Test {}
따라야 한다는 것을 보면 어렵지 않습니다. Model을 사용하려면 다음 규칙을 따르세요.
1) .Application_Model_로 시작하고 그 뒤에 사용자 정의 모델의 클래스 이름이 옵니다.
즉, 웹 애플리케이션 모델의 디렉토리 구조는 /model_demo1/application/models/Test.php입니다.
해당 네임스페이스는 Application_Model_Test입니다.
application은 Application에 대응
models는 모델에 대응
Test는 모델의 클래스 파일 이름입니다.
제약조건에 따른 클래스 이름은 다음과 같습니다. class Application_Model_Test {
Application_Model_을 이해하는 것은 어렵지 않습니다. 이러한 규칙은 zend 프레임워크의 자동 로드 및 네임스페이스 규칙을 따릅니다.
2).Application 네임스페이스
사실 Application은 구성 파일에서 구성한 애플리케이션의 네임스페이스이기도 합니다.
구성 파일의 appnamespace = "Application"을 appnamespace = "App"으로 변경하면.
원본 프로그램에서는 오류를 보고합니다. 그 이유는 자명하다. 그래서 젠드는 그다지 똑똑하지 않습니다.
원리를 자세히 조사하고 싶다면 이 기능을 완성하는 클래스는 아마도 다음 클래스일 것입니다.
Zend_Application_Bootstrap_Bootstrap Zend_Application_Module_Autoloader
2. 네임스페이스 자체 정의
Zend가 기본 네임스페이스입니다. 예를 들어 /model_demo1/library/Zend/Test.php
<?php class Zend_Test{ static public function echoZendTest(){ echo 'ZendTest<br/>'; } }
에 Zend_Test 클래스를 생성하세요. 예: Zend_Test::echoZendTest();
다음은 네임스페이스를 사용자 정의하는 두 가지 간단한 방법입니다.
1) application.ini 구성 파일을 사용합니다.
기본 네임스페이스
사용자 정의 네임스페이스
또는appnamespace = "Application"
autoloadernamespaces.app = "App_" autoloadernamespaces.my = "MyApp_"
autoloadernamespaces[] = "App_" autoloadernamespaces[] = "MyApp_"
public function setOptions(array $options) { if (!empty($options['config'])) { if (is_array($options['config'])) { $_options = array(); foreach ($options['config'] as $tmp) { $_options = $this->mergeOptions($_options, $this->_loadConfig($tmp)); } $options = $this->mergeOptions($_options, $options); } else { $options = $this->mergeOptions($this->_loadConfig($options['config']), $options); } } $this->_options = $options; $options = array_change_key_case($options, CASE_LOWER); $this->_optionKeys = array_keys($options); if (!empty($options['phpsettings'])) { $this->setPhpSettings($options['phpsettings']); } if (!empty($options['includepaths'])) { $this->setIncludePaths($options['includepaths']); } if (!empty($options['autoloadernamespaces'])) { $this->setAutoloaderNamespaces($options['autoloadernamespaces']); }
2) Bootstrap.php 파일
예:/model_demo1/application/Bootstrap.php
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initAutoload() { $app = $this->getApplication (); $namespaces = array ( 'AppTest' ); $app->setAutoloaderNamespaces ( $namespaces ); return $app; } }
/model_demo1/library/AppTest/Test.php
/model_demo1/application/controllers/IndexController.php
<?php class AppTest_Test{ static public function echoAppTestTest(){ echo 'AppTestTest<br/>'; } }
AppTest_Test::echoAppTestTest();
$auto_loader = Zend_Loader_Autoloader::getInstance(); $resourceLoader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => '/www/model_demo1/application', 'namespace' => '', 'resourceTypes' => array( 'model' => array( 'path' => 'models', 'namespace' => 'Model' ) ) ) ); $auto_loader->pushAutoloader($resourceLoader); $auto_loader->registerNamespace(array('AppTest2_')); AppTest2_Test::echoAppTest2Test(); Model_ModelTest::echoModelModelTest();
/model_demo1/application/models/ModelTest.php
/model_demo1/library/AppTest2/Test.php
<?php class Model_ModelTest{ static function echoModelModelTest(){ echo 'Model_ModelTest<br/>'; } }
Zend Framework 튜토리얼의 기본 규칙 및 모델 사용법과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!