PHP源码编写与Zend 编译要注意的小问题 求解决方法(大家畅谈)

fox1999 2005-10-04 09:58:11
Zend 与PHP编写之间的问题。
在使用了Zend后发现执行 Zend编译后的程序,运行结果可能与执行没编译过的PHP代码是不一样的。主要有以下几个问题。
1. 单元文件之间的循环引用。
这个问题很麻烦。情况如下:
现在有 a.php,b.php,c.php三个文件。c.php定义了一个函数,(如:fun1);a.php为主文件。a.php同时引用了b.php与c.php,b.php又引用了c.php.
都编译后执行a.php 这时就会出现错误,说:函数 fun1 已被定义(重复定义)。但在执行PHP源码是不会有什么问题的。

2. 使用 __FILE__ 之类常量的PHP文件编译后执行可能会有错误的结果。
因为 __FILE__ 为常量,而在编译时常量被当时的值替换了。
echo(dirname(__FILE__)); 当时文件是在 c:/interpub/wwwroot/a.php
源码执行得到的当时的目录。放地位置不同,得到的值也不同。
而编译后不管放哪里都是 c:/interpub/wwwroot 了。因为 __FILE__ 已经被 c:/interpub/wwwroot/a.php 替换了。
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ray929 2005-10-06
  • 打赏
  • 举报
回复
if (define('_TEST_PHP')) return;
default('_TEST_PHP',1 );

.........................

defined
define

.....
fox1999 2005-10-06
  • 打赏
  • 举报
回复
TO:海豚
我写错了。

我用 require_once 我试过了,可以的。
fox1999 2005-10-05
  • 打赏
  • 举报
回复
真巧,我也想到一起了。

我这样想的。

if (define('_TEST_PHP')) return;
default('_TEST_PHP',1 );

原理一样。只是我不想搞个那么长跨度的括号把整个文件括起来。

这样方法我是在C++中用过的。也是防止头文件重复加载。我试试。多谢了。
hsboy 2005-10-05
  • 打赏
  • 举报
回复
只怕用return是解决不了问题的
hsboy 2005-10-04
  • 打赏
  • 举报
回复
对于第一个问题,这个很zend optimizer有什么关系?莫非你不编译就不会提示你重复定义吗?这是需要你自己解决的问题。

第二个问题有两种方法可以解决,1是在编译的时候设定低一点的优化级别,2是把echo(dirname(__FILE__))这样的语句改为:

eval('$dir=dirname(__FILE__);');
echo $dir;
hsboy 2005-10-04
  • 打赏
  • 举报
回复
哦,那对第一个问题我也没有什么办法了,不知道你有没有用低一点的优化级别试试?zend safeguard里面把optimizations设为none试试看。

如果你不怕麻烦,也可以像下面这样:
test.php
________________________________________________
<?php
if (!defined('_TEST_PHP'))
{
define('_TEST_PHP', 1);
function a()
{
echo "hello";
}
}
?>

test1.php
___________________________________
<?php
require 'test.php';
require 'test.php';
a();
?>
fox1999 2005-10-04
  • 打赏
  • 举报
回复
对于第一个问题,这个很zend optimizer有什么关系?莫非你不编译就不会提示你重复定义吗?这是需要你自己解决的问题。

==================
1 .不会的。我是用 require_once() 不会提示重复定义,但Zend 编译后问题就来了。


2. 这个方法不错 Thanks
eval('$dir=dirname(__FILE__);');
echo $dir;
内容较大,权限不够,故将内容分为六个部分,需要的请自行下载。 教程版权归原作者所有,本人只是负责搜集整理,本人不承担任何技术及版权问题。教程仅提供学习参考,不得用于商业用途,请在下载后在24小时内删除。 目录: 0001-2科技发展有限公司升级版源码 0001科技发展有限公司修正版源码 0002机械配件制造销售公司修正版源码 0003家具地板公司修正版源码 0004-1机械有限公司修正版源码 0004机械有限公司修正版源码 0005机械产品公司修正版源码 0006绿色环保集团股份有限公司优化版 0007金属材料制品公司修正版源码 0008电气股份有限公司修正版源码 0009红色风格设备有限公司修正版源码 0010蓝色仪表配件有限公司优化版 0011装修公司网站系统修正版源码 0012环保工程企业网站修正版源码 0013国际集团股份有限公司修正版源码 0014蓝色汽车配件有限公司修正版源码 0015家俱集团有限公司源码 0016典雅地板家居网站源码 0017蓝色企业网站系统二 0018国际集团机械仪器公司修正版源码次优化版 0019红色风格企业网站系统优化版 0020机械设备公司修正版源码 0021蓝色环保工程企业网站系统修正版源码 0022国际集团电子科技公司修正版源码 0023国际集团机械电子公司修正版源码 0024美工超级漂亮的ASP卫生纸公司修正版源码 0025绿色环境保护工程公司修正版源码 0026绿色环保生态园林公司修正版源码 0028蓝色机械制造科技公司优化版 0029装修装饰公司企业网站修正版源码 0030绿色风格酒店网站修正版源码 0031机械制造网站修正版源码 0032蓝色机械制造公司修正版源码 0033机械设备制造公司修正版源码 0034ASP机械制造企业修正版源码 0035红色汽车配件公司网站修正版源码 0036机械制造企业修正版源码 0037机械设备公司修正版源码 0038浅蓝色电子科技公司修正版源码 0039机械制造公司企业网站修正版源码 0040国际集团机械有限公司修正版源码 0041机械设备公司优化版 0042机械企业修正版源码 0043机械设备有限公司修正版源码 0044红色机械设备有限公司修政版源码 0045汽车配件制造公司修正版源码 0046蓝色汽配公司修正版源码 0047绿色园林环保公司优化版 0048红色机械化工公司修正版源码 0049机械设备有限公司修正版源码 0051测试完整无错的经典万能企业站程序 0052某电气工程有限公司源码 0053优乐博特自动化工程有限公司网站源码
内容较大,权限不够,故将内容分为六个部分,需要的请自行下载。 教程版权归原作者所有,本人只是负责搜集整理,本人不承担任何技术及版权问题。教程仅提供学习参考,不得用于商业用途,请在下载后在24小时内删除。 目录: 0001-2科技发展有限公司升级版源码 0001科技发展有限公司修正版源码 0002机械配件制造销售公司修正版源码 0003家具地板公司修正版源码 0004-1机械有限公司修正版源码 0004机械有限公司修正版源码 0005机械产品公司修正版源码 0006绿色环保集团股份有限公司优化版 0007金属材料制品公司修正版源码 0008电气股份有限公司修正版源码 0009红色风格设备有限公司修正版源码 0010蓝色仪表配件有限公司优化版 0011装修公司网站系统修正版源码 0012环保工程企业网站修正版源码 0013国际集团股份有限公司修正版源码 0014蓝色汽车配件有限公司修正版源码 0015家俱集团有限公司源码 0016典雅地板家居网站源码 0017蓝色企业网站系统二 0018国际集团机械仪器公司修正版源码次优化版 0019红色风格企业网站系统优化版 0020机械设备公司修正版源码 0021蓝色环保工程企业网站系统修正版源码 0022国际集团电子科技公司修正版源码 0023国际集团机械电子公司修正版源码 0024美工超级漂亮的ASP卫生纸公司修正版源码 0025绿色环境保护工程公司修正版源码 0026绿色环保生态园林公司修正版源码 0028蓝色机械制造科技公司优化版 0029装修装饰公司企业网站修正版源码 0030绿色风格酒店网站修正版源码 0031机械制造网站修正版源码 0032蓝色机械制造公司修正版源码 0033机械设备制造公司修正版源码 0034ASP机械制造企业修正版源码 0035红色汽车配件公司网站修正版源码 0036机械制造企业修正版源码 0037机械设备公司修正版源码 0038浅蓝色电子科技公司修正版源码 0039机械制造公司企业网站修正版源码 0040国际集团机械有限公司修正版源码 0041机械设备公司优化版 0042机械企业修正版源码 0043机械设备有限公司修正版源码 0044红色机械设备有限公司修政版源码 0045汽车配件制造公司修正版源码 0046蓝色汽配公司修正版源码 0047绿色园林环保公司优化版 0048红色机械化工公司修正版源码 0049机械设备有限公司修正版源码 0051测试完整无错的经典万能企业站程序 0052某电气工程有限公司源码 0053优乐博特自动化工程有限公司网站源码

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧