__set: 在设置对象里边不能直接设置(或没有)的属性值的时候,自动去被调用

class Track
{
private $track_name;
public function __set($name, $value)
{
$this->$name = $value;
//在设置对象里边的私有、受保护或者是不存在的属性值的时候,自动去被调用
}
} $magic = new Track();
$magic->track_name = 'Magic';
print_r($magic); //输出
Track Object
(
[track_name:Track:private] => Magic
)

__get: 在获取不可见的属性(private/protected)的时候,自动会被去调用

class Track
{
private $track_name; public function __set($name, $value)
{
if (property_exists($this, $name)) {
$this->$name = $value;
}
//在设置对象里边的私有、受保护或者是不存在的属性值的时候,自动去被调用
} public function __get($name)
{
return $this->$name;
//在获取不可见的属性的时候,自动会去被调用
} } $magic = new Track();
$magic->track_name = 'Magic';
echo $magic->track_name; //获取不可见的属性 //输出
Magic

魔术方法:__set、__get的更多相关文章

  1. PHP 魔术方法__set() __get() 方法

    a); //output: 123 var_dump($s->b); //output: 123 var_dump($s->c); //output: null var_dump($s-& ...

  2. php魔术方法__SET __GET

    __SET  设置一个不可访问的属性的时候 调用_set方法 __GET 获取一个不可访问的属性的时候  调用_get 方法 <?php class stu{ private $a; priva ...

  3. PHP 魔术方法__set() __get() 方法详解

    __set() is run when writing data to inaccessible properties. __get() is utilized for reading data fr ...

  4. php之魔术方法 __set(),__get(),__isset(),__unset()

    __set()与__get() 当一个类里面,属性被设置为私有属性时,这个属性是不能在外部被访问的.那么当我们又想在外部访问时该怎么办呢,我们可以用方法来实现.举例如下: 1 class Test 2 ...

  5. PHP面向对象魔术方法之__get 和 __set函数

    l 基本的介绍 (1) 当我们去使用不可以访问的属性时,系统就会调用__get方法. (2) 不可以访问的属性指的是(1 . 该属性不存在 2. 直接访问了protected或者private属性) ...

  6. PHP的魔法方法__set() __get()

    php的魔法方法__set()与__get() Tags: PHP 我们先来看看官方的文档如何定义他们的: public void __set(string $name, mixed $value); ...

  7. __get().__set.__isset,__unset魔术方法

    一般来说,总是把类的属性定义为 private .这更符合现实的逻辑. 但是对属性的读取和赋值操作非常频繁的,因此在PHP中,预定义了两魔术方法 "__get()"用来获取私有成员属性值的,只有一个参 ...

  8. 跟着百度学PHP[4]OOP面对对象编程-13-魔术方法__set(),__get(),__isset(),__unset()

    __set() 在对象访问私有成员的时候自动被调用,达到了给你看,但是不能给你修改的效果!(在对象访问一个私有的成员的时候就会自动的调用该魔术方法) __get() 方法用于获取私有属性值.(在设置私 ...

  9. PHP魔术法__set和__get

    __set: 在给不可访问属性赋值时,__set() 会被调用.语法如下: public void __set ( string $name , mixed $value ) __get: 读取不可访 ...

  10. php -- 魔术方法 之 设置属性:__set()

    属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __set():当用户在设置不存在或者权限不够的属性的时候会自动触发 没有设置__set($name,$v ...

随机推荐

  1. 转载:遇到BITMAP CONVERSION TO ROWIDS 后解决与思考

    今天遇到一个案例,有点价值写下来,以后多看看 SQL: select t.order_id, t.spec_name, t.staff_code, t.staff_code as xxbStaffCo ...

  2. .NET Core中延迟单例另一种写法【.NET Core和.NET Framework的beforefieldinit差异】

    1.BeforeFieldInit是什么 前段时间在反编译代码时无意间看到在类中有一个BeforeFieldInit特性,处于好奇的心态查了查这个特性,发现这是一个关于字段初始化时间的特性[提前初始化 ...

  3. C# zip -ICSharpCode.SharpZipLib

    利用第三方组件 ICSharpCode.SharpZipLib   download from:  https://github.com/icsharpcode/SharpZipLib using S ...

  4. 【thinkPHP框架】Failed opening required 'header.php' include_path='.;c:\php5\pear 终级解决方案

    ThinkPHP框架中的某一个php页面,想要去引入其他php页面,结果反复报错,无解. 各种百度,有说是文件权限不够的,也有说配置不对的,反正一个都没有解决这个问题,依然无解. 最终,找到了办法,似 ...

  5. django url之path默认参数

    url path指向视图创建和更新数据 实例: from django.urls import path from . import views urlpatterns = [ path('blog/ ...

  6. CentOS 7 源码编译安装 Redis

    1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar -xzf redis-4.0.10.tar.gz cd ...

  7. websockect外网无法访问问题

    项目在测试环境可以正常使用websockect,然而把项目发布到公网上却无法使用问题. 有几种解决方案,1.防火墙未加入入站规则,否则没有权限连接到外网. 方法:控制面板--window防火墙---高 ...

  8. mysqldump 和mysqlbinlog

    一.mysqldump 1.备份test库 #mysqldump -uroot -p' test >test.sql 2.备份 -B参数 ' -B test >test_B.sql --B ...

  9. Kickstart Practice Round 2017---A

    Problem The Constitution of a certain country states that the leader is the person with the name con ...

  10. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛D-80 Days--------树状数组

    题意就是说1-N个城市为一个环,最开始你手里有C块钱,问从1->N这些城市中,选择任意一个,然后按照顺序绕环一圈,进入每个城市会有a[i]元钱,出来每个城市会有b[i]个城市,问是否能保证经过每 ...