如何使用 Zend_Config_Writer_Ini 保留 application.ini 路径

2024-01-16

我目前正在 Phing 中开发一个构建系统,该系统采用 Zend Framework 项目模板并根据 Phing 参数对其进行配置。我遇到的一个问题是使用 Zend_Config_Writer_Ini 时。

我的 Phing 任务从存储库中获取一个名为 application.default.ini 的预填充文件,并使用 Zend_Config_Ini 修改该文件以添加构建文件中的参数(数据库详细信息等)。然后将其写入 application.ini 供项目使用。相关任务代码的简化版本如下所示:

$appConfig = new Zend_Config_Ini(
    $appDefaultConfigPath, 
    null, 
    array(
        'skipExtends' => true,
        'allowModifications' => true
    )
);

$appConfig->production->resources->db->params->host = $buildProperties->db->host;
$appConfig->production->resources->db->params->username = $buildProperties->db->username;
$appConfig->production->resources->db->params->password = $buildProperties->db->password;
$appConfig->production->resources->db->params->dbname = $buildProperties->db->dbname;

$writer = new Zend_Config_Writer_Ini();
$writer->setConfig($appConfig)
       ->setFilename($appConfigPath)
       ->write();

就数据库凭证而言,这工作得很好,但是当涉及到包含定义常量的预填充路径时,就会出现问题。例如:

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"

becomes:

bootstrap.path = "APPLICATION_PATH/Bootstrap.php"

在读取/写入不同的 ini 文件时,有什么方法可以保留这些配置行,或者我应该重构构建文件以在运行任务之前复制文件,并且只修改我需要更改的 ini 行?


当您加载现有配置时,所有常量都已翻译,即,如果您使用 print_r 查看对象,您将不再找到常量。因此,对于编写器来说,会打印完整路径而不是常量。

在您的情况下,我猜您的环境中不存在常量,因此按原样打印。

Update: 更具体。Zend_Config_Ini::_parseIniFile() uses parse_ini_file()读取将常量加载为真实路径的 ini 文件。看php.net 文档示例 #2 http://us.php.net/manual/en/function.parse-ini-file.php

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

如何使用 Zend_Config_Writer_Ini 保留 application.ini 路径 的相关文章

  • Symfony2 dev环境可以工作,prod环境给出404错误

    我最近在我的机器上成功安装了 Symfony2 我可以访问http localhost app dev php 开发环境 但是 当我尝试访问 prod 环境时 http localhost app php 我在浏览器中收到以下错误消息 哎呀
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • PHP preg_replace - www 或 http://

    真正坚持看似简单的事情 我有一个聊天框 喊叫框 其中可能输入任意 URL 我想找到每个单独的 URL 用空格分隔 并将其包装在标签中 例子 Harry you re a http google com http google com wiz
  • 解析错误:语法错误,意外的“”(T_ENCAPSED_AND_WHITESPACE)[重复]

    这个问题在这里已经有答案了 完整错误 解析错误 语法错误 意外的 T ENCAPSED AND WHITESPACE 需要标识符 T STRING 或 变量 T VARIABLE 或数字 T NUM STRING 它说错误出现在第 12 行
  • PHP DateTime::修改加减月份

    我一直在与DateTime class http www php net manual en class datetime php最近在添加月份时遇到了我认为是一个错误 经过一番研究后 看来这不是一个错误 而是按预期工作 根据查到的文档he
  • PHP 将页面生成的标题放入

    我们在网站的所有页面中包含一个 header php 文件 因此 我们可以在 header php 文件中放置一个标题 该标题将应用于整个站点 或者在每个页面中添加一个自定义标题以更具描述性 问题是 这样做时 标题将位于 head 标签之外
  • 如何让 PagerDefault 查询与 Drupal 7 一起正常工作?

    我正在运行以下代码 query db select taxonomy index ti gt fields ti array nid gt condition ti tid term gt tid gt condition n status
  • PHP:会话 |无法解码会话对象

    我尝试将电子商务功能添加到遗留项目中 因此我仍然需要旧的会话处理程序 我使用 PHP v7 1 14 和 Session2DB https github com voku session2db tree 4 0 0 https github
  • 递归BBCode解析

    我正在尝试解析脚本中的 BBCode 现在 它可以无缝工作 直到我尝试缩进不仅仅是粗体或下划线的 BBCode 例如剧透 网址 字体大小等 然后它就会搞砸 这是我的代码 function parse bbcode text global d
  • 如何动态创建新属性

    如何从对象方法内的给定参数创建属性 class Foo public function createProperty var name val here how can I create a property named var name
  • 如何在 Doctrine 中使用 andWhere 和 orWhere ?

    WHERE a 1 AND b 1 Or b 2 AND c 1 OR c 2 我怎样才能在教义中做到这一点 q gt where a 1 q gt andWhere b 1 q gt orWhere b 2 q gt andWhere c
  • PHP:将数组添加在一起

    有人可以帮我解释一下吗 我有两段代码 其中一个按我的预期工作 但另一个则不然 这有效 a array a gt 1 b gt 2 b array c gt 3 c a b print r c Output Array a gt 1 b gt
  • Zend 框架 PDF 问题

    又是我 伙计们 我有一个小问题 Create new PDF pdf new Zend Pdf Add new page to the document page pdf gt newPage Zend Pdf Page SIZE A4 p
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • PHP上传问题

    我使用了一些脚本来开始在我的开发计算机上上传文件 问题是 尽管此操作预期很容易 但每当我尝试上传图像时 Apache 似乎都会超时 上传设置为On和tmp目录设置在php ini 我尝试上传主要内容gif来自谷歌 一个8 36KB图像 它应
  • 将程序存储在 phpMyAdmin 中

    我必须将存储过程添加到 MySQL 数据库 问题是托管提供php我的管理员来管理数据库 我在网上搜索了一下 想法是运行创建程序的MySQL本机语句 但由于程序的代码通常可能有 我们必须更改 MySQL 中的分隔符 php我的管理员没有这个选
  • php循环中的ajax在按钮单击时执行操作

    所以我有一个 php 循环 我使用 jquery 滑动切换来隐藏 显示带有 sql 结果的表 目前该表仅使用 php 加载 但由于发生了很多事情 导致了一些加载问题 我需要使用滑动切换 btn 来触发 ajax 因此它仅在按下按钮时请求当前
  • JQuery 验证不起作用

    我有一种表单 其中一个输入类型的值为 名字 但这可以在 onfocus 函数上更改我想验证此输入字段 如果它为空白或 名字 我有两个 jQuery 文件jquery 1 4 2 min js jquery validate pack js
  • 使用 Laravel dusk 仅迁移一次

    根据到 数据库测试 文档 https laravel com docs 5 4 database testing resetting the database after each test我可以在每次测试后重置数据库 第一个选项 第二个选
  • ZF2 - 从路线生成 URL

    我无法弄清楚在 zend 2 中从我想要的任何地方生成 Url 我得到了动作和控制器 所以我尝试这个 this gt url myControllerName array action gt myActionName 但这返回一个对象 我只

随机推荐

  • iOS WebView远程html与本地图像文件

    以前也有人问过类似的问题 但我一直找不到解决方案 这是我的情况 我的 UIWebView 加载远程 html 页面 网页中使用的图像在构建时是已知的 为了使页面加载速度更快 我想将iOS应用程序中的图像文件打包并在运行时替换它们 请注意 h
  • 如何修复错误:(psycopg2.errors.NotNullViolation)“id”列中的空值违反非空约束?

    为什么会出现下面的错误 我知道db session add 方法但是我想使用原始 SQL 来学习 UUID 不应该自动生成吗 也许我在 postgresql 文本中遗漏了一些内容或者模型中的 id 不正确 error Error psyco
  • 如何配置概率占用地图人员检测器

    概率占用图是一种多摄像头人体检测程序 其c 免费实施可在以下位置获取 http cvlab epfl ch software pom http cvlab epfl ch software pom 为了利用这个方便的软件 需要 经过背景去除
  • 如何比较两个文件的创建日期?

    使用 XP 的批处理 如何使用返回 true 或 false 的函数 isMoreRecentThan pathToFile1 pathToFile2 来比较两个文件的创建日期 该解决方案应在没有管理员权限的情况下运行 特别是不应使用 wm
  • 将 Array Of String 转换为 Double,然后在 Swift 中计算总和

    我有一个字符串数组 我想将其转换为双精度 然后我想将数组中的每个项目加在一起并得到总和 到目前为止 这是我的代码 枚举数组后 我在将它们全部添加在一起时遇到问题 update Xcode 10 1 Swift 4 2 1 或更高版本 let
  • 为什么事件上的composedPath在延迟时返回不同的值?

    因为简单来说path不存在于MouseEvent or WheelEvent类型 我正在使用替代方案 composedPath方法 直到现在我还无法体验到它们之间的区别 我包裹了我的wheel听众与requestAnimationFrame
  • 使用 Apache2 在 Ubuntu 12.04 上启用 htaccess 错误

    我尝试启用 htaccess 我变了
  • 找出当前选择的是哪个 gtk 小部件

    我有一个收藏GtkEntry小部件 其中一些是可编辑和可聚焦的 而另一些则不是 我想找出其中哪些 如果有 当前选择了文本 以便实现 编辑 gt 复制 菜单项 除了迭代所有小部件直到gtk editable get selection bou
  • 删除 iOS Swift 发布版本的 println()

    我想全局忽略所有println 如果我不在调试版本中 则调用我的 Swift 代码 我找不到任何可靠的分步说明 希望得到指导 有没有办法在全球范围内做到这一点 或者我需要包围每个println with IF DEBUG ENDIF声明 最
  • 为什么二进制序列化比 xml 序列化更快?

    为什么二进制序列化比 xml 序列化更快 考虑序列化双精度 例如 二进制序列化 将内存地址中的 8 个字节写入流中 二进制反序列化 读取相同的8个字节 xml 序列化 写入标记 转换为文本 写入结束标记 I O 增加近三倍 CPU 利用率增
  • 使用 localToScene(x,y) 获取节点场景中的位置返回错误值

    我想将弹出的窗格的位置绑定到调用它的按钮的位置 我尝试通过调用来这样做button localToScene button getLayoutX button getLayoutY 然而 返回的 Point2D 变量中的 X 坐标错误 我在
  • 如何在scala中返回一个函数

    How can I return a function side effecting lexical closure https stackoverflow com questions 22288329 side effecting lex
  • 空文本框上的 JQuery 默认文本

    我有一个电子邮件表单文本框 虽然它是空的 但我希望它具有值 电子邮件 当您单击它时 文本就会消失 如果有人点击它但没有输入文本 关于模糊 我希望它恢复为默认文本 我一直在尝试一些事情 但没有任何效果 有人可以指出我正确的方向吗 或者你可以只
  • Linux中如何从另一个终端访问一个终端上运行的进程?

    我想知道该过程 以便我可以从终端访问或控制 Linux 中其他终端上运行的进程 两个终端属于同一系统 也许你想要类似的东西reptyr https github com nelhage reptyr https github com nel
  • GoCQL:将字符串编组到时间戳中

    我正在开发一个带有聚类列的时间序列数据模型 即 CREATE TABLE events id text time timestamp type text val double PRIMARY KEY id time WITH CLUSTER
  • HttpWebRequest 似乎没有发送客户端 SSL 证书

    我正在尝试使用HttpWebRequest查询运行 nginx 的远程服务器 我需要提供客户端证书才能完成连接 我正在执行以下操作 Dim Request As HttpWebRequest DirectCast WebRequest Cr
  • 如何处理 C 和 Python 之间的 IPC?

    我有一个具有两个进程的应用程序 一个在 C 中 一个在 Python 中 C 进程是完成所有繁重工作的地方 而 Python 进程则处理用户界面 C 程序每秒向大型缓冲区写入 4 次 Python 进程读取该数据 至此与Python进程的通
  • 保持片段中所选项目的突出显示?

    我有一个包含两个片段的布局 左侧片段是使用 SimpleCursorAdaptor 的 ListFragment 右侧片段填充了有关从左侧片段列表中选择的项目的详细信息 我试图弄清楚如何确保从 ListFragment 中选择项目stays
  • 如何在Ubuntu上安装phpMyAdmin 4.7.7?

    我需要最新版本 而不是 4 6 6here https launchpad net nijel archive ubuntu phpmyadmin packages 我读了manual https docs phpmyadmin net e
  • 如何使用 Zend_Config_Writer_Ini 保留 application.ini 路径

    我目前正在 Phing 中开发一个构建系统 该系统采用 Zend Framework 项目模板并根据 Phing 参数对其进行配置 我遇到的一个问题是使用 Zend Config Writer Ini 时 我的 Phing 任务从存储库中获