将核心类放在 Web 根目录之上 - 好还是坏主意?

2023-12-04

我们正在开发几个在我们自己的服务器上运行的 Web 应用程序,这些应用程序将共享许多核心类作为其 MVC 设置的一部分。

我正在考虑将这些类放在 Web 根目录之上,以便所有应用程序都可以仅使用一份副本来 autoload() 这些类,而不必担心同步问题。

专用类将位于其相关的 Web 目录中,但共享库将位于 /var/www/shared-libraries 或类似目录下。

除了可能会因为一行错误的代码而导致所有网站同时崩溃之外,还有什么理由让我不想走这条路呢?

Thanks.


Zend框架正在使用该技术,这使得整个应用程序不会以纯文本形式输出敏感的 PHP 代码,因为所有内容都位于文档根目录之外,并使用 mod_redirect 来知道要分派到哪个模块/控制器/操作。

基本的项目布局看起来像

application
- controllers
- views
- - scripts
public
- .htaccess 
- index.php
library
- Zend

并拥有../library在您的包含路径中,您可以轻松地从应用程序中的任何位置自动加载所有 Zend 类(例如 Zend_View)。当然,Zend 还附带了用于视图助手和其他自定义类前缀的类自动加载器,但这超出了问题范围。

由于所有内容都位于文档根目录 (/public) 之外,因此用户可以看到的唯一脚本(以防出现问题并且用户开始看到暴露的 PHP 代码)是对应用程序引导程序和其他初始化行的调用(例如包含路径和和一些常量,但您也可以通过包含另一个外部文件来初始化所有这些...)。

简而言之,是的,将核心类放在文档根目录之外是一个好主意,也是一个好的实践。然后,您所需要做的就是在包含路径列表中添加共享库的路径,如下所示:

set_include_path(implode(PATH_SEPARATOR, array(
    LIBRARY_PATH,
    get_include_path(),
)));

其中 LIBRARY_PATH 是共享库的相对或绝对路径。

但请注意,添加的路径越多,自动加载类的速度就越慢。最好只包含 3 条或更少的路径。看看 Zend 如何通过他们的解决方案来解决这个问题自动装载机.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将核心类放在 Web 根目录之上 - 好还是坏主意? 的相关文章

  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何检查PHP变量是否包含非数字?

    我只是想知道检查 PHP 变量中是否有非数字的方法以及它是否也检测字符之间的空格 需要确保我的表单字段中没有添加任何奇怪的内容 提前致谢 如果您的意思是您只想要一个包含数字的值 那么您可以使用ctype digit http php net
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • 如何检测哪个 EKevent 被更改

    我遇到问题了 我需要知道 EventStore 中的事件何时发生更改 因此对于本例我使用EKEventStoreChangedNotification但这个通知给我带来了难以理解的字典userInfo它看起来像这样 EKEventStore
  • python加密模块中的错误:_RSAPrivateKey'对象没有属性'sign

    在我的 Python 代码中 我使用密码学模块 我的磁盘上有一个私钥 所以 根据文档 我使用了这个例子加载该密钥 然后使用该密钥对消息进行签名 但运行程序会抛出 AttributeError RSAPrivateKey 对象没有属性 sig
  • 学习正则表达式 (PHP) 的最佳地点是哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 学习正则表达式 PHP 的
  • 备份/恢复整个 Eclipse 工作区

    我开始学习Android操作系统 我还处于学习模式 在学习 Android 的同时 我似乎对 Java 有了一些了解 因为我发现的大多数示例都希望您使用 Eclipse 好吧 我想我也在学习 Eclipse 这是一件好事 我不是在抱怨 这个
  • Xamarin.Forms。 SwipeGesture 和 ScrollView 在 Android 上不能一起使用

    我将 Grid 与 SwipeGesture 和 ScrollView 一起使用 ScrollView 运行良好 但 SwipeGesture 不适用于 Android 在 iOS 中我没有问题 为什么 请帮帮我
  • UIDatePicker 语言环境什么都不做?

    我正在以编程方式创建 UIDatePicker 并使用以下代码设置其区域设置 datePicker locale NSLocale alloc initWithLocaleIdentifier es ES autorelease 日期选择器
  • 在 iOS 设备上查找正确的时间

    我想找出 iOS 设备上的正确时间 即使用户手动设置了错误的时间 在设置 gt 常规 gt 日期和时间中 有自动设置选项 如果用户取消选中该选项 那么我如何以编程方式找到正确的时间 使用 NTP 协议获取当前时间或从服务器提供时间并在应用程
  • 使用foldl 和foldr 反转Scheme 中的列表

    如何定义一个函数来反转Scheme中的列表 方法是使用foldr and foldl 我们想要的是一个简洁的解决方案 使用foldl调用并使用不同的解决方案foldr调用 定义为 define foldl operation lst ini
  • QtGui.QTextEdit 根据线条包含的文本设置线条颜色

    这是我第一次使用 stackoverflow 来寻找问题的答案 我正在使用 QtGui QTextEdit 来显示类似于下面的文本 并希望根据某些行是否包含某些文本来更改文本的颜色 以 开头的行将为蓝色 包含 ERROR 的行将为红色 我目
  • 带有包含查询的 JPA 转换器

    我的 Spring Boot 应用程序中的特定查询遇到了一些问题 我正在使用 Spring 的内置文本加密来加密数据库中的文本 我有一个名为 BookRecord 的实体 Entity Table name books EntityList
  • 使用 Spring JPA 存储库和查询 DSL 进行动态投影

    我目前有一个 Spring JPA 存储库继承QuerydslPredicateExecutor and JpaRepository 我正在使用Page
  • PyQt4.QtCore.QVariant 对象而不是字符串?

    我按照这个例子键 值 pyqt QComboBox 使用下面的代码将 ID 值存储到组合框项 self combox widget addItem Apples Green indx self combox widget currentIn
  • java.lang.ClassNotFoundException:org.springframework.core.ResolvableTypeProvider [重复]

    这个问题在这里已经有答案了 我已经编写了一个 Spring 带注释的调度程序程序 但是当我执行它时 它会在帖子标题中给出错误消息 SchedulerConfig java import java util concurrent Execut
  • .net (C#) 中的模拟并通过 Process.start 打开文件

    你好 我正在使用以下方法进行一些模仿LogonUser正如许多地方所解释的那样 我使用了引入的很棒的类库here 但原理似乎全网都是一样的 我成功地模仿并去了我的 普通 用户无法到达的地方 但是当我尝试以编程方式打开一个doc文件 或txt
  • PowerShell - 启动进程和命令行开关

    我可以很好地运行 msbuild C WINDOWS Microsoft NET Framework v3 5 MSBuild exe start process msbuild wait 但是当我运行这段代码 如下 时 我收到错误 msb
  • 禁用keras或tensorflow输出[重复]

    这个问题在这里已经有答案了 我知道 stackoverflow 上已经有一些类似的问题 但没有一个解决我的问题 在 python 脚本中 我必须多次训练 keras 模型 并且我想在 GPU 支持下完成此操作 每次我在输出控制台中看到一堆行
  • Linux 32 位机器上程序的堆栈分配限制

    在 C 中 在编译器放弃并表示无法为堆栈分配更多内存之前 堆栈段可以增长多少 在 linux fedora 32 位机器上使用 gcc 在 UNIX 下 如果您正在运行 bash 请运行 ulimit a 它将列出各种限制 包括堆栈大小 我
  • 使用 php 使用 socket_write 发送大数据包

    我正在尝试将图像编码为 base64 编码并将其发送到我正在创建的 C 服务器 我正在使用 PHP 来做到这一点 因此 PHP代码是客户端 C 代码是监听服务器 该问题出现在大图像上 例如 70KB 图像 它在小图像上工作正常 比如5KB
  • Django - 关系“关系”不存在。无法运行 python manage.py migrate?

    所以我很愚蠢 我去删除了 django 应用程序中的一个表 因此打开 psql 并运行 Drop table 然后桌子掉了 然后我删除了我的模型并运行 python manage py migrate 然后出现此错误 django db u
  • 将核心类放在 Web 根目录之上 - 好还是坏主意?

    我们正在开发几个在我们自己的服务器上运行的 Web 应用程序 这些应用程序将共享许多核心类作为其 MVC 设置的一部分 我正在考虑将这些类放在 Web 根目录之上 以便所有应用程序都可以仅使用一份副本来 autoload 这些类 而不必担心