您现在的位置:首页 > 教案格式 > 正文

数组换位置一.介绍 PHP(外文名:PHP: Hyperte(19)

2018-02-02 05:05 网络整理 教案网

构造方式是类中的一个特殊的方法,其作用是在实例化一个对象的同时,给该对象的属性赋值,使之一创建完成,就具有了其本身的特有数据(属性值)。

该方法名字是固定的,为:__construct();

该方法必须是普通方法(不能是静态方法)

通常该方法应该是public

通常该方法中使用$this这个关键字来对属性进行赋值

当new 类名()的时候,其实是在调用该构造方法

如果一个类中定义了构造方法,则实例化该类时就会调用该方法,且实例化时的参数需要跟构造方法的参数匹配

<?php
class C1{
  function __construct($v1, $v2){
    $this->v1 = $v1;
    $this->v2 = $v2;
  }
  public $v1;
  public $v2;
}
$o1 = new C1(123, 456);
var_dump($o1->v1);
var_dump($o1->v2);

析构方法是“销毁”对象的时候会自动调用

析构方法通常用于在销毁对象的时候来“清理数据”

通常,php程序结束后,所有对象都会自动销毁(其实属于php内部的垃圾回收机制)

说明:

析构方法通常不太需要去定义。

析构方法不能调用。

析构方法不能有形参。

析构方法中可以用于清理一些在php代码结束后不能清理的数据,如生成的文件。

对象销毁的几个情形:

脚本程序运行结束,自动销毁;

明确地unset()一个对象变量,则被销毁;

改变对象变量的值,被销毁;

实际上,当一个对象没有任何一个变量指向它的时候,该对象就会被自动销毁。如果整个程序结束,也会销毁。

<?php
class C1{
  function __construct(){
    echo ‘construct‘.PHP_EOL;
  }
  function __destruct(){
    echo ‘destruct‘.PHP_EOL;
  }
}
$o1 = new C1();//construct:$o1
$o2 = new C1();//construct:$o2
unset($o1);//construct:$o1
//construct:$o2

创建对象:

$对象名 = new 类名();//对象名就是变量名;类是应该定义过了

用可变类名创建对象

$对象名 = new self;//self指代类本身,这行代码只能在类内部方法中使用

通过对象创建对象

创建空对象,不通过类创建对象(php不能new Object()要用强制类型转换,用于返回数据)

<?php
class C1{
  function f1(){
    $o3 = new self;
  }
}
$o1 = new C1();

$class1 = ‘C1‘;
$o2 = new $class1();

$o4 = new $o1;
// 创建空对象
$o5 = (object)null;
// 不通过类创建对象
$o6 = (object)array(‘name‘=>123,‘pwd‘=>456);

对象的传值:

默认是值传递,可以使用引用传递

值传递:将这个对象复制一个给新变量(对象的属性和方法不复制,所以这两个对象共用一套属性和方法)

引用传递:将新变量指向当前对象的空间

<?php
class C1{
  public $v1 = 10;
}
$o1 = new C1();
$o2 = $o1;
$o3 = &$o1;
var_dump($o1);//class C1#1
var_dump($o2);//class C1#1
var_dump($o3);//class C1#1

$o1 = new C1();
var_dump($o1);//class C1#2
var_dump($o2);//class C1#1
var_dump($o3);//class C1#2(引用传递)