PHP5才可以~~~用private function

解决方案 »

  1.   

    不是这个意思
    class C0{
      function func1(){
        echo 'func1';
      }  function func2(){
        echo 'func2';
      }
    }class C1{
      var $o;
      function c1{
        $this->o=new C0;
        $this->o->func1();//允许
        $this->o->func2();//允许
      }
    }
    class C2{
      function C2{
        $c1=new C1;
        $c1->o->func1();//如何禁止???
      }
    }
      

  2.   

    就是说只有用$this->o才能访问
      

  3.   

    <?php
    class C0
    {
    function func1(){
    echo 'func1';
    } function func2(){
    echo 'func2';
    }
    }class C1
    {
    private $o;
    function c1(){
    $this->o=new C0;
    $this->o->func1();//允许
    $this->o->func2();//允许
    }
    }
    class C2
    {
    function C2(){
    $c1=new C1;
    $c1->o->func1();//如何禁止???
    }
    }$c1=new C1;
    echo "<br />";
    $c2=new C2;
    ?>
      

  4.   

    class C2{
      function C2{
        $c1=new C1;
        $c1->o->func1();//如何禁止???
        $c1->o->func2();//允许
      }
    }
      

  5.   

    如果是这样,应该无法实现...
    因为要禁止,就必须对C0的func1()或C1的$o进行私有声明

    对C0的func1()进行私有声明,则C1无法访问到
    对C1的$o进行私有声明,则C2无法访问到.
      

  6.   

    因为在做回调
    class Event{
    function addListener($obj,$func);
    function raise();
    }
    我希望只有在声明这个对象的类里面才可以调用raise();
      

  7.   

    统一surfchen(冲浪),需要转到PHP5来实现
      

  8.   

    不管php4还是php5
    希望可以有一个解决办法
    或者换一种结构也可以
      

  9.   

    你考虑用继承吗??c1继承c0,c0的raise()方法用protect