Home php教程 PHP开发 Zend Framework Tutorial: Model Basic Rules and Usage

Zend Framework Tutorial: Model Basic Rules and Usage

Jan 03, 2017 pm 01:47 PM

The examples in this article describe the basic rules and usage of the model in the Zend Framework tutorial. Share it with everyone for your reference, the details are as follows:

Here we talk about the model in Zend. In fact, Model processing in Zend is quite simple.

This is mainly due to the autoload function. Unlike other frameworks, complex base classes are defined for models.

If you want to define a model, you have to inherit a model base class before you can use specific functions.

The model is not encapsulated in Zend.

The reason is probably that the Model is mainly related to specific business logic, and excessive encapsulation will only add to the confusion.

Zend uses the autoload and namespace functions to solve this problem tactfully.

Create a zendframework project model_demo1

In order to easily view errors, we can turn on the error message switch in the configuration file /model_demo1/application/configs/application.ini as follows:

1

2

3

phpSettings.display_startup_errors = 1

phpSettings.display_errors = 1

resources.frontController.params.displayExceptions = 1

Copy after login

Next, let’s briefly talk about the model in zend:

1. Default Model

A standard webapp will have a directory such as application/models. It is not difficult to see that the power of the model

directory used by models to store your app is that if you define a specific class in the models directory. zend will automatically load it for us. Of course, certain conventions must be followed, provided that:

For example, use the zf command line to create a Model named Test

1

zf create model Test

Copy after login

Creating a model at /www /model_demo1/application/models/Test.php

Updating project profile '/www/model_demo1/.zfproject.xml'

Refresh the project directory and you will see that the following files have been added/ model_demo1/application/models/Test.php

The content of the file is as follows:

1

2

3

<?php

class Application_Model_Test

{}

Copy after login

It is not difficult to see that we must follow the following rules to use Model:

1). Take Application_Model_ at the beginning, followed by the class name of the custom model.

That is: the directory structure of the model of our web application is /model_demo1/application/models/Test.php

The corresponding namespace is Application_Model_Test.

application corresponds to Application

models corresponds to models

Test is the name of the model’s class file.

The name of the class is according to the constraints: class Application_Model_Test {

It is not difficult to understand Application_Model_. Such rules follow the autoload and namespace conventions of zend framework.

2).Application namespace

In fact, Application is also the namespace of the application we configured in the configuration file.

If you change the appnamespace = "Application" of the configuration file to appnamespace = "App".

Our original program will report an error. The reason is self-evident. So zend is not that smart.

If you want to investigate the principle in detail, the following class probably completes this function:

1

2

Zend_Application_Bootstrap_Bootstrap

Zend_Application_Module_Autoloader

Copy after login


2. Custom naming Space

Zend is the default namespace. For example, create the class Zend_Test

1

2

3

4

5

6

<?php

class Zend_Test{

 static public function echoZendTest(){

  echo &#39;ZendTest<br/>&#39;;

 }

}

Copy after login

in /model_demo1/library/Zend/Test.php


##. You don’t need to do anything to use it in the program. For example: Zend_Test::echoZendTest();

Here are two simple ways to customize the namespace:

1). Use the application.ini configuration file

Default namespace

1

appnamespace = "Application"

Copy after login

Custom namespace

1

2

autoloadernamespaces.app = "App_"

autoloadernamespaces.my = "MyApp_"

Copy after login

or

1

2

autoloadernamespaces[] = "App_"

autoloadernamespaces[] = "MyApp_"

Copy after login

The specific implementation class is: Zend\Application.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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;]);

 }

Copy after login


2).In the Bootstrap.php file

For example/model_demo1/application/Bootstrap.php

1

2

3

4

5

6

7

8

9

10

11

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

 protected function _initAutoload() {

  $app = $this->getApplication ();

  $namespaces = array (

    &#39;AppTest&#39;

  );

  $app->setAutoloaderNamespaces ( $namespaces );

  return $app;

 }

}

Copy after login


/model_demo1/library/AppTest/Test.php

1

2

3

4

5

6

<?php

class AppTest_Test{

 static public function echoAppTestTest(){

  echo &#39;AppTestTest<br/>&#39;;

 }

}

Copy after login

/model_demo1/application/controllers/IndexController.php

1

AppTest_Test::echoAppTestTest();

Copy after login

3). Use specific classes to complete automatic loading

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$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();

Copy after login


/model_demo1/application/models/ModelTest.php

1

2

3

4

5

6

<?php

class Model_ModelTest{

 static function echoModelModelTest(){

  echo &#39;Model_ModelTest<br/>&#39;;

 }

}

Copy after login

/model_demo1/library/AppTest2/Test.php

1

2

3

4

5

6

<?php

class AppTest2_Test{

 static public function echoAppTest2Test(){

  echo &#39;AppTest2Test<br/>&#39;;

 }

}

Copy after login
I hope this article will be helpful to everyone in PHP programming.

For more articles related to the basic rules and usage of the model in the Zend Framework tutorial, please pay attention to the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)