Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和服务器层次结构设计,受url传播变化的启发_Php_Android_Mysql - Fatal编程技术网

PHP和服务器层次结构设计,受url传播变化的启发

PHP和服务器层次结构设计,受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[

我有一个关于如何正确设计php文件及其在服务器上的存储的一般性问题

问题是:我将一个php对象的函数拆分为不同的php文件,如:

文件1 AndroidFlashCard.php

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