php继承问题汗血宝马(PHP 继承)

本文目录一览:

thinkphp 模板继承问题

thinkPHP对模板文件进行目录划分,默认的模板文件定义规则是:视图目录/[模板主题/]控制器名/操作名+模板后缀。默认的视图目录是模块的View目录(模块可以有多个视图文件目录,这取决于你的应用需要),框架的默认视图文件后缀是.html。新版模板主题默认是空(表示不启用模板主题功能)。在每个模板主题下面,是以模块下面的控制器名为目录,然后是每个控制器的具体操作模板文件,例如:User控制器的add操作对应的模板文件就应该是:View/User/add.html一些其他配置:1.’DEFAULT_V_LAYER’=’Template’,//设置默认的视图层名称//结果:Template/User/add.html2.’TMPL_TEMPLATE_SUFFIX’=’.tpl’,//设置默认后缀//结果:View/User/add.tpl3.’TMPL_FILE_DEPR’=’_’,//配置模板的目录层次//结果:View/User_add.html4.’DEFAULT_THEME’=’default’,//设置默认的模板主题//没有启用模板主题之前View/User/add.html//启用模板主题之后View/default/User/add.html

PHP类继承的问题,子类继承父类,实例化子类,先执行父类还是先执行子类?

不是这个意思。所谓“实例化子类的对象前要先实例化父类中的内容,为父类初始化”,是指当子类正在实例化时,总是链式调用父类构造方法初始化父类空间。换句话说,子类的构造方法必须先调用父类的构造方法,完了才能干别的初始化工作。如果子类没有显式调用语句,编译器会隐式帮你加上。

如:

public class A{ public A() { }}public class B extends A{ public B() { }}等价于:

public class A{ public A() { super();//这里实际上是Object(); //其他初始化工作 }}public class B extends A{ public B() { super();//这里实际上是A(); //其他初始化工作 }}另外,如果有这种情况:

public class A{ X x=new X(); public A() { }}public class B extends A{ Y y=new Y(); public B() {//这是类A空间里的字段都已经初始化完毕。 }}在成员y被赋值之前,x一定已经存在。换句话说,X x=new X();一定先于Y y=new Y();执行。

php 继承一个类一定要引用一下吗

php有自动加载类的功能,但是需要遵循一定的规则,并且需要额外的代码支持实现。

对于你说的问题,较常见的情况是b.php里面虽然没有引用a.php,但是c.php可能引用了a.php及b.php。只要在一个php进程中保证引用了这些文件就行,引用位置是可变的。例如在第一行引用和在第二行引用没有区别,只要在new之前引用过就好了。但是明显这不是值得推荐的。

thinkphp5.1,类继承问题请问我的为什么是错的。class Index extends \think\Controller?

单词错啦好几个,field不是filed,assign不是assgin,这些都是方法名,是不可以错的,还有这个错误提示的意思是变量未定义,你要检查下相关的字段是否存在。

php中静态类的继承

楼主这个问题跟静态没有多大关系,主要是继承的概念没有搞清楚,继承一个类是将子类拥有了调用父类的方法和属性的权利,并不是说将父类的方法复制到了子类中self方法相当于当前类的指针,你那样调用相当于写了

public static function test() {

parent::who();

}

这样的代码,所以才会出现那样的结果

PHP继承的问题,调用父类的方法this指向问题。

我来说一说:

【一】…………public(仅有)属性和方法的继承…………

class a{

public $var = ‘var a br/’;

public function m(){

echo ‘fun a br/’;

}

public function run(){

echo $this-var;

$this-m();

}

}

class b extends a{

public $var = ‘var b br/’;

public function m(){

echo ‘fun b br/’;

}

}

$li = new b();

$li-run();

echo ‘hr’;

var_dump($li);

输出:

var b 

fun b 

————————————————————————————

object(b)[1]

  public ‘var’ = string ‘var b br/’ (length=11)

在这段代码中所表示的,是我们常见的一种继承方式,同为公有属性的$var 和公有方法m()

在这里,$var和m()都被继承并覆写,实例化过后,内存中只有一个$var实例,通过var_dump($li);我们可以看到它。

【二】…………private(私有)属性和方法的继承…………

class a{

private $var = ‘var a br/’;

private function m(){

echo ‘fun a br/’;

}

public function run(){

echo $this-var;

$this-m();

var_dump($this);

echo ‘br/br/’;

}

}

class b extends a{

private $var = ‘var b br/’;

private function m(){

echo ‘fun b br/’;

}

public function run(){

echo $this-var;

$this-m();

var_dump($this);

echo ‘br/br/’;

parent::run();

}

}

$li = new b();

$li-run();

echo ‘hr’;

var_dump($li);

输出:

var b 

fun b 

object(b)[1]

  private ‘var’ = string ‘var b br/’ (length=11)

  private ‘var’ (a) = string ‘var a br/’ (length=11)

.

.

var a 

fun a 

object(b)[1]

  private ‘var’ = string ‘var b br/’ (length=11)

  private ‘var’ (a) = string ‘var a br/’ (length=11)

.

————————————————————————————————

object(b)[1]

  private ‘var’ = string ‘var b br/’ (length=11)

  private ‘var’ (a) = string ‘var a br/’ (length=11)

这个时候,我们可以看到,在调用run方法时,首先它会调用到b类的私有属性$var 和私有方法m(),随后,又使用parent::run()调用父类的run()方法,我们可以看到,父类的run()方法调用后,它所调用的属性和方法,都是a类的两个私有属性和方法,这种形式,和你的问题一致;

而它与$this指向无关,我们可以在这里看到,两个$this都是指向b类。

而最有意思的是,在$li句柄中,我们却看到了两个属性!一个是b类的属性,一个是a类的属性,这两个属性同时存在着,那么,私有方法也自然是同时存在着。

【三】…………私有属性和方法能不能被继承…………

class a{

private $var = ‘var a br/’;

private function m(){

echo ‘fun a br/’;

}

}

class b extends a{

public function run(){

echo $this-var;

$this-m();

}

}

$li = new b();

$li-run();

输出:

Notice: Undefined property: b::$var in E: … on Line 9

Fatal error: Call to private method a::m() from context ‘b’ in E: … on Line 10

这可以证明,私有属性和方法,无法被继承,所以,你的代码示例中所说,将a类的m()方法更改为private后,会显示aa的属性,也就可以理解明白了。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/181859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-23 06:43
下一篇 2024-11-23 06:43

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • 如何解决WPS保存提示会导致宏不可用的问题

    如果您使用过WPS,可能会碰到在保存的时候提示“文件中含有宏,保存将导致宏不可用”的问题。这个问题是因为WPS在默认情况下不允许保存带有宏的文件,为了解决这个问题,本篇文章将从多个…

    编程 2025-04-29
  • Java Thread.start() 执行几次的相关问题

    Java多线程编程作为Java开发中的重要内容,自然会有很多相关问题。在本篇文章中,我们将以Java Thread.start() 执行几次为中心,为您介绍这方面的问题及其解决方案…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • Python爬虫乱码问题

    在网络爬虫中,经常会遇到中文乱码问题。虽然Python自带了编码转换功能,但有时候会出现一些比较奇怪的情况。本文章将从多个方面对Python爬虫乱码问题进行详细的阐述,并给出对应的…

    编程 2025-04-29
  • NodeJS 建立TCP连接出现粘包问题

    在TCP/IP协议中,由于TCP是面向字节流的协议,发送方把需要传输的数据流按照MSS(Maximum Segment Size,最大报文段长度)来分割成若干个TCP分节,在接收端…

    编程 2025-04-29
  • 如何解决vuejs应用在nginx非根目录下部署时访问404的问题

    当我们使用Vue.js开发应用时,我们会发现将应用部署在nginx的非根目录下时,访问该应用时会出现404错误。这是因为Vue在刷新页面或者直接访问非根目录的路由时,会认为服务器上…

    编程 2025-04-29
  • 如何解决egalaxtouch设备未找到的问题

    egalaxtouch设备未找到问题通常出现在Windows或Linux操作系统上。如果你遇到了这个问题,不要慌张,下面我们从多个方面进行详细阐述解决方案。 一、检查硬件连接 首先…

    编程 2025-04-29
  • Python折扣问题解决方案

    Python的折扣问题是在计算购物车价值时常见的问题。在计算时,需要将原价和折扣价相加以得出最终的价值。本文将从多个方面介绍Python的折扣问题,并提供相应的解决方案。 一、Py…

    编程 2025-04-28

发表回复

登录后才能评论