PHP升级到5.4后 private调用类库不能执行

php中文网
发布: 2016-06-20 12:29:45
原创
1078人浏览过

小白求助!!!
php升级到5.4后 
之前可以执行的函数现在不能执行了
整个文件结构如下

class wechatcallbackapitest
{
public function valid()
    {
……
include('db.php');
……
$contentstr= $this->zhiwen($name,$xuehao);
……
}

       private function zhiwen($uid,$xuehao) {
include('db.php');
……
}
}

现在zhiwen函数只要到include('db.php'); 下面就不能正常执行了
而db.php在上面valid调用是正常的

db.php文件为调用一个数据库的类库,文件如下
$db_config["hostname"]    = "localhost";    //服务器地址
……
include('db.class.php');
$db    = new db();
$db->connect($db_config);
 ?>

小白一个,对于函数、类库继承很是不明白,请教高手帮忙解决 谢谢

秘塔写作猫
秘塔写作猫

秘塔写作猫是一个集AI写作、校对、润色、配图等为一体的创作平台

秘塔写作猫 127
查看详情 秘塔写作猫


回复讨论(解决方案)

这与 PHP升级到5.4 毫无关系!

你在 public function valid() 中
   include('db.php');
又在 private function zhiwen($uid,$xuehao) 中
  include('db.php');
由于 db.class.php 中有 db 类的定义,就造成了 db 类重复定义的错误
这是连 php4 都不允许出现的!

这与 PHP升级到5.4 毫无关系!

你在 public function valid() 中
   include('db.php');
又在 private function zhiwen($uid,$xuehao) 中
  include('db.php');
由于 db.class.php 中有 db 类的定义,就造成了 db 类重复定义的错误
这是连 php4 都不允许出现的!



谢谢回答!
但是 我这样写 在升级之前是可以正常执行的
刚才我试着删除private function zhiwen($uid,$xuehao) 里的
include('db.php');
发现 zhiwen函数里对数据库的操作已经不能执行了

只要你的 db.class.php 中有 class db { .... } 
那么你的程序在任何版本的 php 中都不可能正确运行

倒是
public function valid()
    {
……
include('db.php'); //这个可能是你后加的
……
$contentStr= $this->zhiwen($name,$xuehao);
……
}

倒是
public function valid()
    {
……
include('db.php'); //这个可能是你后加的
……
$contentStr= $this->zhiwen($name,$xuehao);
……
}



public function valid()里的 include('db.php');也是之前都有的
我就是升级了lnmp后 就不能使用了
现在 public function valid() 
和 private function zhiwen($uid,$xuehao) 
都需要调用使用数据库类
那么怎么能够正常调用 include('db.php');
并使用类库呢?

//引用多次造成的,改成如下include_once('db.php');
登录后复制

//引用多次造成的,改成如下include_once('db.php');
登录后复制


谢谢回答 请问哪个改成include_once('db.php');


//引用多次造成的,改成如下include_once('db.php');
登录后复制


谢谢回答 请问哪个改成include_once('db.php');

两个都改



//引用多次造成的,改成如下include_once('db.php');
登录后复制


谢谢回答 请问哪个改成include_once('db.php');

两个都改
我查了下include_once是避免重复调用的,第二次的调用同一个文件 会自动过滤
但是我第二次那个,也就是private function zhiwen($uid,$xuehao) 这个
也需要调用那个类库啊 
现在没调用也没有继承 下面有数据库的操作直接用不了
请问有方法能继承吗?

有人能帮忙解决下吧

倒是
public function valid()
    {
……
include('db.php'); //这个可能是你后加的
……
$contentStr= $this->zhiwen($name,$xuehao);
……
}



您好 那要是不能重复调用 请问private function zhiwen($uid,$xuehao)应该怎么使用db的类库啊 谢谢

把 b.php 中的 include('db.class.php');
改为 include_once('db.class.php');
include('db.php'); 不用改



//引用多次造成的,改成如下include_once('db.php');
登录后复制


谢谢回答 请问哪个改成include_once('db.php');

两个都改

那要是不能重复调用 请问private function zhiwen($uid,$xuehao)应该怎么使用db的类库啊 谢谢

把 b.php 中的 include('db.class.php');
改为 include_once('db.class.php');
include('db.php'); 不用改



谈感谢了 可以了
请问是什么原理
为什么里面的不需要改成 include_once 只要修改db.php文件里的就可以了?

include_once 是加载过了就不加载
include 是总是加载,不管是否加载过了
所以被多次 include 的文件中不能有 类、函数、常量 的定义,否则就是重复定义了

你的 db.php 中有
include('db.class.php'); //里面含有 db 类的定义
所以当再次 include('db.php'); 时,就会因 db 类已经定义过了,而出错

改成 include_once('db.class.php'); 后就没有这个问题了,因为 db 累的定义只会加载一次

include_once 是加载过了就不加载
include 是总是加载,不管是否加载过了
所以被多次 include 的文件中不能有 类、函数、常量 的定义,否则就是重复定义了

你的 db.php 中有
include('db.class.php'); //里面含有 db 类的定义
所以当再次 include('db.php'); 时,就会因 db 类已经定义过了,而出错

改成 include_once('db.class.php'); 后就没有这个问题了,因为 db 累的定义只会加载一次



谢谢讲解
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号