php类实例化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php类实例化相关的知识,希望对你有一定的参考价值。

三个文件
1、init.php
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name); //实例化数据库类
require('/common.php'); //包含通用处理函数文件
2、common.php
function get_navigation()

$sql = 'select * from yz_navigation where 1 and status > 0';
$query = $db->getAll($sql);
return $query;

3、index.php
require('/init.php');
$navigation = get_navigation();
print_r($navigation);

执行index.php,提示:
Notice: Undefined variable: db in common.php on line 10

Fatal error: Call to a member function getAll() on a non-object in common.php on line 10

get_navigation()...... 内,query之前 加一句 global $db;
或者改为

function get_navigation($db)......

$navigation = get_navigation($db);追问

你的方法很好,问题解决了,但我想知道具体是为什么,能不能说说

追答

php 是没有链式作用域概念的,函数内默认是不能访问函数外的变量的
global $db; //把php 函数内的$db变量声明为全局变量,也可用通过超级全局变量数组 $_GLOBAL['db'] 直接访问 全局变量 $db

第二种是 传参的方式

参考技术A php里面不需要cls_mysql类,php内置了mysqli类和mysqli_stmt类,mysqli_stmt类达到了与甲骨文相同的封装程度。通常使用mysqli类就可以了。 参考技术B 你的这个$db->getAll不能用啊,你要初始化这个数据库连接类,要在这个方法里面把$db 变成一个公共参数 就global $db;这样才可以的额 参考技术C 我是初学者 来学习学习 参考技术D 您好,注重基础很重要,你可以把局部变量和全局变量,引用传参这些在看看。问题已经有人解决了,我就给点建议吧,呵呵,我也是新手! 第5个回答  2012-02-03 写的有点乱

php 实例化时父类以及__construct.php

<?php

class A {
    public $a = 1;
    public $c = 4;
    public function __construct() {
        $this->a = 333;
    }

    public function ttt() {
        $this->a = 3332;
    }

}

class B extends A{
    public $a = 3;
    public $b = 2;
    public function __construct() {
        $this->a = 3331;
    }
}

$test = new B;
$test2 = new A;
$test3 = 1;

以上是关于php类实例化的主要内容,如果未能解决你的问题,请参考以下文章

php类实例化

PHP能在类中实例化一个类吗

php 实例化 问题

php中如何在A类的方法里面 实例化B类,并调用B类的方法?

PHP单例模式的三私一公

PHP面相对象:声明类和实例化类