我正在制作一个简单的应用程序来管理员工'任务,称为WorkerManager。起初,我有以下结构:
workermanager
|-index.php
|
|-user
| |-dao
| | |-UserDAO.php
| |-model
| |-view
|-task
| |-dao
| |-model
| |-view
|-department
| |-dao
| |-model
| |-view
...
因此,UserDAO.php位于workermanager/user/dao/
,我使用require_once './user/dao/UserDAO.php'
将其包含在内。
后来,我决定改变项目的结构,并做了类似的事情:
workermanager
|-index.php
|
|-dao
| |-user
| | |-UserDAO.php
| |-task
| |-department
|-model
| |-user
| |-task
| |-department
|-view
| |-user
| |-task
| |-department
...
我是通过创建文件夹,拖动和放大来完成的。在NetBeans项目窗格中删除。从那以后,我无法包含UserDAO.php
(或任何其他更改位置的文件)。函数file_exists('./dao/user/UserDAO.php')
返回false。当我使用echo
$_SERVER['DOCUMENT_ROOT'].'/workermanager/dao/user/UserDAO.php'
文件位置时,它会提供正确的路径,但当我尝试以这种方式include
或require
时,它无法正常工作。我试图删除这个项目并使用现有资源创建一个新项目,但它仍然无法正常工作。
任何想法我该怎么办?
下次当我决定更改树结构时,我应该在NetBeans之外进行吗?是否有任何方法可以使NetBeans"扫描"项目结构和学习"新途径?
我使用NetBeans 8.1,Apache 2.4.18,Ubuntu 16.04
感谢。
修改: 稍微偏离主题......在这样的项目中,如果我有一个"模型",一个" DAO"和一个或多个" view"每个实体的文件,您更喜欢哪种结构?是否有任何"最佳做法"关于项目树的形状?
编辑2 : 我刚刚制作了一个具有以下结构的新项目:
shoppinglist
|-index.php
|...
|-list
| |-ShoppingList.php
| |-ShoppingListController.php
| |-create-new-list.php
| |-edit-list.php
|...
...
在index.php
我require_once './list/ShoppingListController.php';
,它完美无缺。但是在list/edit-list.php
我有完全相同的一行,但它不起作用。我还尝试过要求/仅包含'ShoppingListController.php'
以及$_SERVER['DOCUMENT_ROOT'].'/shoppinglist/list/ShoppingListController.php'
,但仍然没有。谁能告诉我发生了什么?
答案 0 :(得分:1)
Apache可能会缓存您的index.php文件,但仍然使用旧路径。你应该检查一下。
Netbeans只是一个可以更改文件的IDE。 Netbeans没有办法在这里出问题,您也可以使用记事本来更改这些路径,从项目角度来看也是如此。
答案 1 :(得分:0)
我终于找到了解决方案!
在每个include
或require
中,我已使用'./'
启动了路径。我认为这是我网站的根目录,但它是当前的文件夹。因此,可以在'./list/ShoppingListController.php'
中使用index.php
,但不应在edit-list.php
中使用ShoppingListController.php
,该dirname(__FILE__)
与include
位于同一文件夹中。< / p>
解决方案是在每个require
或index.php
的开头使用require_once dirname(__FILE__).'/list/ShoppingListController.php';
,然后连接路径的其余部分。
例如,在edit-list.php
我有:
require dirname(__FILE__).'/ShoppingListController.php';
......在ShoppingListController.php
我有:
require_once dirname(__FILE__).'/../db/DBConnection.php';
require_once dirname(__FILE__).'/ShoppingList.php';
require_once dirname(__FILE__).'/../article/Article.php';
在<some_string>:<some_string>
我需要包含多个文件,所以我有:
A110:B120
这解决了我的问题,现在一切都很完美:)