dqrfdl5708 2015-03-27 08:10
浏览 56

PHP如何才能在课堂内使用$ this-> app?

I am learning PHP these days. Sorry, if my below query look dumb.

 <?php
class A
{
   var $parent;
   var $app;

   function A($parent) {

      $this->parent = $parent;

      if ($parent->isApplication()) {
         $this->app = $parent;
      } else {
         $this->app = $parent->getApplication();
      }
   }


}
?>



<?php
class B extends A

{
    private $app;
    private $cfg;

    public B() {
        $this->app = parent::$app;
        $this->cfg = $this->app->cfg;
    }


}
?>


<?php

class C extends A {

function x(){ new B($this); // calling somewhere in some
} }

?>

How do I use $this inside subclass 'B', I knew that I can use $this inside some function, BUT my intention is to use $app everywhere in that php file, so I am trying to create $app just inside class so that I can use this $app variable anywhere, otherwise I would have used $this inside some function.

Here is my query: How can I able to use $this->app just inside class?


UPDATE:

  <?php
class A
{
   var $parent;
   var $app;

   function Canvas($parent) {

      $this->parent = $parent;

      if ($parent->isApplication()) {
         $this->app = $parent;
      } else {
         $this->app = $parent->getApplication();
      }
   }


}
?>


<?php
class B extends A

{
    private $app;
    private $cfg;

    public Canvas_Access_Approval() {
        $this->app = parent::$app;
        $this->cfg = $this->app->cfg;
    }


}
?>


<?php

class C extends A {

    function x(){
       new B($this);
    }
}

?>

Getting Error as: PHP Parse error: syntax error, unexpected 'B' (T_STRING), expecting variable (T_VARIABLE)

  • 写回答

3条回答 默认 最新

  • doudui6756 2015-03-27 08:13
    关注

    You are extending class A, so you receive all public / protected properties of this parent. It means:

    class A {
        public $app = 'test';
    }
    
    class B extends A {
        public function get() {
            echo $this->app;
        }
    }
    
    new B; // test
    

    or (but unnecessarily):

    class B extends A {
        private $bApp;
    
        public function __construct() {
            echo $this->bApp = $this->app;
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?