>  기사  >  php教程  >  Zend 프레임워크 튜토리얼: 모델 기본 규칙 및 사용법

Zend 프레임워크 튜토리얼: 모델 기본 규칙 및 사용법

高洛峰
高洛峰원래의
2017-01-03 13:47:001206검색

이 기사의 예에서는 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 &#39;ZendTest<br/>&#39;;
 }
}

에 Zend_Test 클래스를 생성하세요. 예: Zend_Test::echoZendTest();

다음은 네임스페이스를 사용자 정의하는 두 가지 간단한 방법입니다.


1) application.ini 구성 파일을 사용합니다.

기본 네임스페이스

사용자 정의 네임스페이스

또는
appnamespace = "Application"

구체적인 구현 클래스는 다음과 같습니다: ZendApplication.php
autoloadernamespaces.app = "App_"
autoloadernamespaces.my = "MyApp_"

autoloadernamespaces[] = "App_"
autoloadernamespaces[] = "MyApp_"

public function setOptions(array $options)
{
 if (!empty($options[&#39;config&#39;])) {
  if (is_array($options[&#39;config&#39;])) {
   $_options = array();
   foreach ($options[&#39;config&#39;] as $tmp) {
    $_options = $this->mergeOptions($_options, $this->_loadConfig($tmp));
   }
   $options = $this->mergeOptions($_options, $options);
  } else {
   $options = $this->mergeOptions($this->_loadConfig($options[&#39;config&#39;]), $options);
  }
 }
 $this->_options = $options;
 $options = array_change_key_case($options, CASE_LOWER);
 $this->_optionKeys = array_keys($options);
 if (!empty($options[&#39;phpsettings&#39;])) {
  $this->setPhpSettings($options[&#39;phpsettings&#39;]);
 }
 if (!empty($options[&#39;includepaths&#39;])) {
  $this->setIncludePaths($options[&#39;includepaths&#39;]);
 }
 if (!empty($options[&#39;autoloadernamespaces&#39;])) {
  $this->setAutoloaderNamespaces($options[&#39;autoloadernamespaces&#39;]);
 }

2) Bootstrap.php 파일

예:/model_demo1/application/Bootstrap.php

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
 protected function _initAutoload() {
  $app = $this->getApplication ();
  $namespaces = array (
    &#39;AppTest&#39;
  );
  $app->setAutoloaderNamespaces ( $namespaces );
  return $app;
 }
}

/model_demo1/library/AppTest/Test.php


/model_demo1/application/controllers/IndexController.php

3) . 특정 클래스를 사용하여 자동 로딩 완료
<?php
class AppTest_Test{
 static public function echoAppTestTest(){
  echo &#39;AppTestTest<br/>&#39;;
 }
}

AppTest_Test::echoAppTestTest();

$auto_loader = Zend_Loader_Autoloader::getInstance();
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
  &#39;basePath&#39; => &#39;/www/model_demo1/application&#39;,
  &#39;namespace&#39; => &#39;&#39;,
  &#39;resourceTypes&#39; => array(
    &#39;model&#39; => array(
      &#39;path&#39; => &#39;models&#39;,
      &#39;namespace&#39; => &#39;Model&#39;
    )
  )
)
);
$auto_loader->pushAutoloader($resourceLoader);
$auto_loader->registerNamespace(array(&#39;AppTest2_&#39;));
AppTest2_Test::echoAppTest2Test();
Model_ModelTest::echoModelModelTest();

/model_demo1/application/models/ModelTest.php


/model_demo1/library/AppTest2/Test.php

이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.
<?php
class Model_ModelTest{
 static function echoModelModelTest(){
  echo &#39;Model_ModelTest<br/>&#39;;
 }
}

Zend Framework 튜토리얼의 기본 규칙 및 모델 사용법과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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