首页 > 后端开发 > 正文

在php中self与$this的分别(构造函数的应用)

2024-07-30 21:12:21 | 我爱编程网

今天我爱编程网小编为大家带来了在php中self与$this的分别(构造函数的应用),希望能帮助到大家,一起来看看吧!

本文目录一览:

在php中self与$this的分别(构造函数的应用)

在php中self与$this的分别

1、意思上的区别

self代表类,$this代表对象(self是引用静态类的类名,而$this是引用非静态类的实例名)

2、用法上的区别

能用$this的地方一定使用self,能用self的地方不一定能用$this。

扩展资料:

Python中self用法详解

1、以Student类为例,在Python中,定义类如下:

class Student(object):

pass

(Object)表示该类从哪个类继承下来的,Object类是所有类都会继承的类。

2、实例:定义好了类,就可以通过Student类创建出Student的实例,创建实例是通过类名+()实现:

student = Student()

3、由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑上去:

class Student(object):

def __init__(self, name, score):

self.name = name

self.score = score 我爱编程网

在php中self与$this的分别(构造函数的应用)

构造函数的应用

C++构造函数
C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函数,因为这个外部对象只是引用在其他地方声明的对象,并没有真正地创建一个对象。
C++的构造函数定义格式为:
class <类名>
{
public:
<类名>(参数表)
//...(还可以声明其它成员函数)
};
<类名>::<函数名>(参数表)
{
//函数体
}
如以下定义是合法的:
class T
{
public:
T(int a=0){i=a;}//构造函数允许直接写在类定义内,也允许有参数表。
private:int i;
};
如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:
1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。
<类名>::<类名>(){},即不执行任何操作。
例子 #include <iostream>using namespace std;class time{public:time()//constructor.构造函数{hour=0;minute=0;sec=0;}void set_time();void show_time();private:int hour,minute,sec;};int main(){class time t1;t1.show_time();t1.set_time();t1.show_time();return 0;}void time::set_time(){cin>>hour>>minute>>sec;}void time::show_time(){cout<<hour<<:<<minute<<:<<sec<<endl;}程序运行情况:
0:0:0
10 11 11 回车
10:11:11
任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。
构造函数
void__construct( [mixed args [, ...]] )
php 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
注:如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。
例子 19-6. 使用新标准的构造函数 <?phpclassBaseClass{function__construct(){printInBaseClassconstructor/n;}}classSubClassextendsBaseClass{function__construct(){parent::__construct();printInSubClassconstructor/n;}}$obj=newBaseClass();$obj=newSubClass();?>为了实现向后兼容性,如果 php 5 在类中找不到__construct()函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为__construct()的方法,但它却又不是构造函数。

在php中self与$this的分别(构造函数的应用)

php直接用类名调用静态方法会不会触发类的构造函数

我爱编程网(https://www.52biancheng.com)小编还为大家带来php直接用类名调用静态方法会不会触发类的构造函数的相关内容。

调用静态方法与触发类的构造函数没有必然关系。但是静态方法可以实例化类本身,这时候会触发构造函数,而且可以传参数。如:
class classname{
    private function __construct($a){
        $this->a = $a;
        exit($this->a);//打印一下
    } 

    public static function staticfun($a){
        new self($a);
    }
}

// use case as follow:
$a = '测试123';
classname::staticfun($a);

以上就是我爱编程网整理的在php中self与$this的分别(构造函数的应用)相关内容,想要了解更多信息,敬请查阅我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“在php中self与$this的分别(构造函数的应用)”相关推荐
php的self函数 在php中self与$this的分别
php的self函数 在php中self与$this的分别

phpself::报错$PHP_SELF表示当前的php文件这是php的几个系统的变量比如你的a.php文件在/www/g/f/那么如果你只是echo$PHP_SELF那么就会得到/www/g/f/a.php另外php这样系统函数还有不少比如$REMOTE_ADDR表示获取客户端的ip这些东西在phpinfo()中都可以看到注意这里这些字母都是大写的你说的下面那个问题是由于那个offset变

2025-01-24 12:57:39
在php中self与$this的分别(php this和self的区别)
在php中self与$this的分别(php this和self的区别)

在php中self与$this的分别1、意思上的区别self代表类,$this代表对象(self是引用静态类的类名,而$this是引用非静态类的实例名)2、用法上的区别能用$this的地方一定使用self,能用self的地方不一定能用$this。扩展资料:Python中self用法详解1、以Student类为例,在Python中,定义类如下:cla

2024-07-31 22:46:05
请问PHP构造函数的含义 php this和self的区别
请问PHP构造函数的含义 php this和self的区别

PHP的其他方面PHP在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是数据文件:Adabas、D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MicrosoftSQLServer、·MySQL、Solid、Sybase、Oracle、PostgreSQL而在Internet上它也支持了相当多的通讯协议(prot

2024-07-14 11:50:21
析构函数与构造函数的区别是什么呢?
析构函数与构造函数的区别是什么呢?

析构函数与构造函数的区别是什么呢?析构函数(destructor)与构造函数相反,当对象结束其生命周期时(对象所在的函数已调用完毕),系统自动执行析构函数。主要作用在于清理对象,释放对象占用的资源,如内存、文件句柄等。析构函数在对象生命周期结束时自动调用,无需程序员手动调用。它通常用于执行与创建对象相反的操作,如关闭文件、释放内存等。析构函数的名称通常以“~”开头,例如~MyClass()。

2024-10-30 22:14:22
php中const和define的区别 php this和self的区别
php中const和define的区别 php this和self的区别

php中const和define的区别define部分:宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)宏的语法为:#define宏名称宏值作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母。利用宏的优点:1)让代码更简洁明了当然,这有赖于你为宏取一个适当的名字。一

2024-10-16 21:22:23
PHP 类的构造函数基础-构造函数语法与特点解析(php中function函数的用法)
PHP 类的构造函数基础-构造函数语法与特点解析(php中function函数的用法)

PHP类的构造函数基础-构造函数语法与特点解析PHP类的构造函数是初始化对象时自动调用的特殊函数,具备以下特点:1.每个类仅有一个构造函数,默认名称为__construct,用于在实例化类时初始化对象属性。2.构造函数在创建对象时被自动调用,无需显式调用。3.可以通过构造函数接收参数,用于初始化对象属性。例如:classperson{public$name;

2024-11-25 13:17:11
php声明公用函数 PHP中构造函数与自定义函数区别
php声明公用函数 PHP中构造函数与自定义函数区别

php中function函数的用法在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,

2025-02-20 03:38:43
PHP中private和public还有protected的区别 php this和self的区别
PHP中private和public还有protected的区别 php this和self的区别

php随机数函数在PHP中,随机数(RandomNumber)是指一组伪随机数(Pseudo-randomNumber),即看起来随机的数字序列,但实际上是由一个算法生成的。PHP提供了一些内置函数,可以用来生成伪随机数,这些函数可以用于各种应用程序,如游戏、密码学、模拟等。以下是一些PHP中常用的生成随机数的函数:1、rand()函数:生成一个指定范围内的随机整数。例如

2024-08-01 21:32:48