语言:php
<?php
class A{
 function A(){
  //在此放入代码使AA方法不执行但不影响BB方法中echo "I am BB!<br>";的执行
 }
 function AA(){
  echo "I am AA!<br>";
 }
}
class B{
 function B(){ }
 function BB(){
  $A = new A();
  $A->AA();
  echo "I am BB!<br>";
 }
}
$B = new B();
$B->BB();
?>

解决方案 »

  1.   

    看不懂..你想干嘛不过没意义.
    <?php
        class A{
            function A($d=false){
                $this->d=$d;
                //在此放入代码使AA方法不执行但不影响BB方法中echo "I am BB!<br>";的执行
            }
            function AA(){
                if($this->d){
                    echo "I am AA!<br>";  
                }
            }
        }
        class B{
            function B(){        }
            function BB(){
                $A = new A();
                $A->AA();
                echo "I am BB!<br>";
            }
        }
        $B = new B();
        $B->BB();
    ?>
      

  2.   

    <?php
    class A{
     function A(){
    $this->AA(); //用$this指向本类的方法,A类被实例化的时候调用。
     }
     function AA(){
      echo "I am AA!<br>";
     }
    }
    class B{
     function B(){ }
     function BB(){
      $A = new A();
      $A->AA();
      echo "I am BB!<br>";
     }
    }
    $B = new B();
    $B->BB();
    ?>输出结果:
    I am AA!<br>I am AA!<br>I am BB!<br>
      

  3.   

    各位估计没看懂:
    <?php
        class A{
            function A(){
                //补充:
                  //这里需要做判断:如果成立则继续执行AA(),如果不成立则不执行AA()跳回到(注释1)处继续执行echo "I am BB!<br>";
            }
            function AA(){
                if($this->d){
                    echo "I am AA!<br>";  
                }
            }
        }
        class B{
            function B(){        }
            function BB(){
                $A = new A();
                $A->AA();
                (注释1)echo "I am BB!<br>";
            }
        }
        $B = new B();
        $B->BB();
    ?>
      

  4.   

    回8楼,不一定额,需根据A的构造方法中的判断来决定是否执行AA
      

  5.   

    引用二楼的吧class A{
    private $b = false;
    function A($b){
    $this->b = $b;/////////////这块
    }
    function AA(){
    if($this->b)echo "I am AA!<br>";/////////////////这块
    }
    }
    class B{
    function B(){ }
    function BB(){
    $A = new A(false);///////////////这块,其中FALSE也可以当参数传进来
    $A->AA();
    echo "I am BB!<br>";
    }
    }
    $B = new B();
    $B->BB();
      

  6.   

    class A{
        private $b = false;
        function A(){
            if(外部变量(可能为true也可能为false) == true){
                $b = true;
            }
        }
        function AA(){
            if($this->b)echo "I am AA!<br>";
        }
    }
    class B{
        function B(){    }
        function BB(){
            $A = new A();
            $A->AA();
            echo "I am BB!<br>";
        }
    }
    $B = new B();
    $B->BB();
    大体就是这个意思,够清晰了,但是现在不想在A中没个函数都加上if($this->b)这个判断,能否有办法
      

  7.   

    你可以就有一个if(){}else{}当if的时候所有需要操作的就在if中,否则,放到else中
      

  8.   

    这么说吧:A内部肯定是有N个函数的,而每个函数都需要经过刚才构造函数的过滤,如果只用AA这一个函数的话,然后根据参数来进行不同操作的话`````,那就失去使用这个类的意义了
      

  9.   

    再给你一个...不过还是那句话,很奇怪的需求.
    <?php
        class A{
            function A($not_allow=array()){
                $this->not_allow=$not_allow;
                //在此放入代码使AA方法不执行但不影响BB方法中echo "I am BB!<br>";的执行
            }
            private function m_AA(){
                echo "I am AA!<br>";  
            }
            function __call($m,$ps){
                $m=preg_replace('/^_m/i','',$m);
                if(!in_array($m,$this->not_allow)&&method_exists($this,"m_{$m}")){
                    call_user_func_array(array(&$this,"m_{$m}"),$ps);  
                }
            }
        }
        class B{
            function B(){        }
            function BB(){
                $A = new A();
                $A->AA();
                echo "I am BB!<br>";
            }
        }
        $B = new B();
        $B->BB();
    ?>
      

  10.   

    $not_allow=array("AA");试试. 就知道有没有用了
      

  11.   

    晕啊,不需要m_前缀的,私有函数经过call调用的..哈哈,又学到一招.
      

  12.   

    ````jlzan1314你还没太明白我的意思,AA是可能被调用也可能不被调用的,这个‘可能’是根据类A的构造函数调用外部方法的一个返回值来判断是否调用AA,不过你的写法让我想到一个办法,同样谢谢你.
    也谢谢以上各位大神们!