解决方案 »

  1.   

    class A {}
    class B {
      public $o;
      function __construct() {
        $this->o = new A;
      }
    }
    $p = new B;
    print_r($p);B Object
    (
        [o] => A Object
            (
            ))
      

  2.   

    @xuzuning版主
    <?php
    class test{
    private $parameter;
    public function __construct($parameter){
    $this->parameter=$parameter;
    echo "test类构造方法被调用<br/>";
    }
    public function getParameter(){
    echo $parameter;
    }
    }
    class test1{
    private static $test=null;
    public function __construct(){
    $test = new test("test");
    echo "test1类构造方法被调用<br/>";
    }
    public static function show(){
    echo "show()方法被调用";
    self::$test->getParameter();//
    }
    }
    $test1 = new test1();
    test1::show();
    ?>
    以上代码这句:self::$test->getParameter();会报Fatal error: Call to a member function getParameter() on a non-object,我把test1类的属性$test改为普通属性,show()方法改为普通方法,还是报同样的错误,为什么?
      

  3.   


    你的程序写错了。
    1.第9行,你要显示$parameter属性,应是 echo $this->parameter; 而不是echo $parameter;
    2.第15行 $test = new test("test"); 这个赋值并不会赋值到 private static $test,所以第20行的self::$test 是等于null
    因此15行需要改为 self::$test = new test("test"); 修改后的程序如下:<?php
        class test{
            private $parameter;
            public function __construct($parameter){
                $this->parameter=$parameter;
                echo "test类构造方法被调用<br/>";
            }
            public function getParameter(){
                echo $this->parameter; // 修改这里
            }
        }
        class test1{
            private static $test=null;
            public function __construct(){
                self::$test = new test("test");  // 修改这里
                echo "test1类构造方法被调用<br/>";
            }
            public static function show(){
                echo "show()方法被调用";
                self::$test->getParameter();//
            }
        }
        $test1 = new test1();
        test1::show();
    ?>
    test类构造方法被调用
    test1类构造方法被调用
    show()方法被调用test最后不得不说,自己有问题应该开贴,不应该在别人贴里面问。
      

  4.   


    你的程序写错了。
    1.第9行,你要显示$parameter属性,应是 echo $this->parameter; 而不是echo $parameter;
    2.第15行 $test = new test("test"); 这个赋值并不会赋值到 private static $test,所以第20行的self::$test 是等于null
    因此15行需要改为 self::$test = new test("test"); 修改后的程序如下:<?php
        class test{
            private $parameter;
            public function __construct($parameter){
                $this->parameter=$parameter;
                echo "test类构造方法被调用<br/>";
            }
            public function getParameter(){
                echo $this->parameter; // 修改这里
            }
        }
        class test1{
            private static $test=null;
            public function __construct(){
                self::$test = new test("test");  // 修改这里
                echo "test1类构造方法被调用<br/>";
            }
            public static function show(){
                echo "show()方法被调用";
                self::$test->getParameter();//
            }
        }
        $test1 = new test1();
        test1::show();
    ?>
    test类构造方法被调用
    test1类构造方法被调用
    show()方法被调用test最后不得不说,自己有问题应该开贴,不应该在别人贴里面问。
    谢了呀,记住了