PHP 类和对象 —— new创建对象

一、创建实例

  1. 必须用new创建类的实例
  2. 类应该被实例化之前被定义
  3. 创建新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出一个异常
  4. new之后跟着的是一个包含有类名的字符串string,则该类的实例被创建。如果该类属于一个命名空间,则必须用其完整名称。
//直接new一个对象
$instance = new PhoneClass();
//将字符串赋值给变量
$phoneClass = 'PhoneClass';
$instance = new $phoneClass();//PhoneClass()

二、对象赋值

  1. 在类内部定义中,可以用new self和new parent创建新对象。
  		$instance = new UserController();
        $assigned = $instance;
        $reference = & $instance;//$referece 引用的是$instance这个对象

        $instance->var ='$assigned will have this value';
        $instance = null;//$instance和 $reference 都会变成null
		
		$self = new Self();//创建自身类的对象,我这里是在PhoneController类中定义的。
        $parent = new Parent();//创建父类的对象,因为PhoneController继承基类Controller。

        dump($instance);
        dump($reference);
        dump($assigned);

		dump($self);
        dump($parent);

输出结果为:

null
null
App\Http\Controllers\UserController {#321 ▼
  #middleware: []
  +"var": "$assigned will have this value"
}
//自身类
App\Http\Controllers\PhoneController {#320 ▼
  #middleware: []
}
//父类
App\Http\Controllers\Controller {#322 ▼
  #middleware: []
}

三、创建新对象

Class Phone{
	static public function getNew(){
		//new static 返回的是调用者的实例,比如继承的时候子类Meizu调用父类Phone的getNew方法返回的就是Meizu的实例,而不是Phone的实例
		return new static;
	}
}

Class Meizu extends Phone{
}

$phone = new Phone();
$mobile = new $phone;	

var_dump($phone !== $mobile);

$phone1 = Phone::getNew();	
//instanceof用于确定一个变量是否属于一个类的实例,比如变量$phone是否是Phone类的一个实例,是返回true,否返回false
var_dump($phone1 instanceof Phone);

$meizu = Meizu::getNew();
var_dump($meizu instanceof Meizu);

输出结果如下

true
true
true

四、访问新创建对象的成员
1、可以通过表达式访问

echo (new Phone())->name;//  -> 向右箭头符号为对象运算符

五、属性访问和方法调用

class Phone {
	public $name = '属性';
	public function name(){
		return '方法';
	}
}
$phone = new Phone();
echo $phone->name; //访问name属性
echo $phone->name(); //调用name方法
PHP_EOL;//换行符,会根据对应系统进行换行
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值