php 在Zend的任何文件夹中创建类和派生类

iugsix8n  于 2023-01-08  发布在  PHP
关注(0)|答案(1)|浏览(118)

我想问一些关于Zend框架的问题。如果有人知道请回答,会有很大的帮助。

***Q1.**我们可以在Zend项目的任何文件夹中创建类、抽象类和派生类吗?
***Q2.**如果Q1的答案是肯定的,我们如何访问数据库(从模型类),或者我们需要利用任何其他与Zend相关的功能。
***问题3.**是否可以将抽象类和类的实现放在源代码树中某个位置的专用文件夹中?

lnlaulya

lnlaulya1#

Q1-我们可以在Zend项目的任何文件夹中创建类、抽象类和派生类吗?

是的,你可以,但是不鼓励这样做。为什么?因为这样做会导致项目混乱,一部分代码在给定的位置,其他代码在其他位置,其他代码片段在第三个位置。这会使维护变得比应该的更复杂,浪费时间在所有不同的位置之间搜索代码。
对于本主题,我建议您阅读PSR-4 specifications and directives
话虽如此,让我们做一个例子:你想在outsideFolder文件夹中创建一个类OutsideClass,命名空间为OutsideCode
你需要做的是:
1.在文件夹outsideFilder中创建,该文件夹将位于项目的根文件夹中。
1.创建类OutsideClass

<?php

namespace OutsideCode;

class OutsideClass
{
    // ...
    // Class properties, constructor and methods
    // ...
}

1.在composer.json中添加名称空间,以便应用程序能够将名称空间转换为物理位置:

"autoload": {
    "psr-4": {
        ...
        "OutsideCode\\": "outsideFolder/"
    }
}

1.运行composer dump-autoload以重新创建自动加载文件
1.现在,您可以将所有需要的代码放入此文件夹中,始终遵循PSR-4指令
1.使用控制器/Map器/表单/验证器/...中的新类

<?php

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use OutsideCode\OutsideClass;

class IndexController extends AbstractActionController
{

    public function indexAction()
    {
        $outsideClass = new OutsideClass();
    }
}

Q2-如果Q1的答案是肯定的,我们如何访问数据库(从模型类)或我们需要利用任何其他Zend相关功能。

使用Zend相关功能不是强制性的。
没有人会阻止你从头开始访问你的代码,只使用PHP方法,访问数据库,验证电话号码,或者发送电子邮件.如果你想使用Zend功能(或者你已经写好的类),只需要用use语句和文件的顶部导入它们(如前一个代码片段所示).
最重要的总是:DRYdon't reinvent the wheel+this

Q3-是否可以将抽象类和类的实现放在源代码树中某个位置的专用文件夹中?

是的,直到它的位置跟随PSR-4 specifications and directives,否则它不会被加载(也不会被执行)

相关问题