PHP和服务器层次结构设计,受url传播变化的启发
我有一个关于如何正确设计php文件及其在服务器上的存储的一般性问题 问题是:我将一个php对象的函数拆分为不同的php文件,如: 文件1 AndroidFlashCard.phpPHP和服务器层次结构设计,受url传播变化的启发,php,android,mysql,Php,Android,Mysql,我有一个关于如何正确设计php文件及其在服务器上的存储的一般性问题 问题是:我将一个php对象的函数拆分为不同的php文件,如: 文件1 AndroidFlashCard.php class AndroidFlashCard { public function retrieveCards($packname){} public function retrievePacks(){} .... 文件2 RetrieveCards.php include ($_SERVER[
class AndroidFlashCard {
public function retrieveCards($packname){}
public function retrievePacks(){}
....
文件2 RetrieveCards.php
include ($_SERVER['DOCUMENT_ROOT'].'/flash_card/AndroidFlashCard.php');
$connection = new AndroidFlashCard();
$connection->retrieveCards($_REQUEST['pack']);
...
除了为单个函数调用创建单独的php文件的糟糕代码气味外,当类的位置/名称发生更改时,也会出现问题。假设我们使用这种劣质的设计,我有1000种不同的功能
想到的快速而肮脏的解决方案是另一个包含文件:
文件3 include.php:
include ($_SERVER['DOCUMENT_ROOT']./[location of class])
但这并没有真正改变任何事情,因为如果include.php文件的位置发生变化,我将不得不再次进行1000次更改
让我们想想这个。如果我必须对1000个php文件进行1000次更改,这些文件只包含对类的引用,然后编写代码来执行函数,那么这可能就是设计问题
在android中,我只知道如何执行http请求,这就是为什么我将函数调用拆分为单独的文件
如果我能得到那个php对象,它会使事情变得更容易,但我觉得这将很难实现
更简单的解决方案是什么?编写目录结构是生产工作的一个设计部分吗?在批准之后,它仅仅是一成不变的吗?这听起来像是自动加载类的好例子。当您尝试使用文件2中的类时,php可以调用自动加载函数来实际查找要包含的类。你必须写下背后的逻辑,但这是1的变化,而不是你所说的1000
通常最好将所有类函数都放在类中,只将单独的类放入不同的文件中。至于目录和代码结构,您可以看看框架是如何实现的。与模型-视图-控制器模式一样,它也具有经过深思熟虑的代码结构。具体来说,您可以看看Zend框架,只需使用Zend MVC附带的预定义目录结构。使用Zead AutoLoad,如果你坚持ZND命名空间命名约定,就不需要包含任何文件。更进一步,你可以考虑使用GET请求简单地在代码库中返回所需的函数或对象。实例http://yourlibs.org/?library=retrievecards