继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第2天 PHP - SPL库及魔术方法

潮流宣乐生
关注TA
已关注
手记 55
粉丝 0
获赞 0

课程名称:大话PHP设计模式

课程章节:SPL标准库简介、魔术方法的使用

课程讲师:Rango

课程内容:

这里介绍几个SPL库中的几个常用的数据结构

  • 栈(先进后出)
$a = new SplStack();
$a->push('1');
$a->push('2');

echo $a->pop();
echo $a->pop();

// 结果:21
  • 队列(先进先出)
$a = new SplQueue();
$a->enqueue('1');
$a->enqueue('2');

echo $a->dequeue();
echo $a->dequeue();

// 结果:12
  • 最小堆(先进先出)
$a = new SplMinHeap();
$a->insert('1');
$a->insert('2');

echo $a->extract();
echo $a->extract();

// 结果:12
  • 固定数组
$a = new SplFixedArray(10);
$a[0] = 123;
$a[9] = 1234;

var_dump($a);

/*
 结果:object(SplFixedArray)#1 (10) {
  [0]=>
  int(123)
  [1]=>
  NULL
  [2]=>
  NULL
  [3]=>
  NULL
  [4]=>
  NULL
  [5]=>
  NULL
  [6]=>
  NULL
  [7]=>
  NULL
  [8]=>
  NULL
  [9]=>
  int(1234)
}
*/
  • 什么是魔术方法?
  • 是类中一种特殊的方法,触发某个行为时而调用的方法
// 魔术方法:__get
// 当调用类中不存在的属性时,会调用此方法,传调用的属性名称;如果不存在此方法,则返回空
class Class1{
  public function __get($name) {
    return time();
  }
}

$a = new Class1();
echo $a->value1;

// 输出:1662651989
// 魔术方法:__set
// 当设置类中不存在的属性时,会调用此方法,传调用的属性名称和设置的值
class Class1{
  public function __set($name, $value) {
    echo "调用了__set魔术方法,传值:{$name}和{$value}";
  }
}

$a = new Class1();
$a->value1 = 123;

// 输出:调用了__set魔术方法,传值:value1和123
// 魔术方法:__call
// 当调用类中不存在的方法时,会调用此方法,传调用的方法名和传的参数
class Class1{
  public function __call($fun, $params) {
    var_dump($fun, $params);
  }
}

$a = new Class1();
$a->test(1, 2);

/*
输出:
 string(4) "test"
  array(2) {
    [0]=>
    int(1)
    [1]=>
    int(2)
  } 
 */
// 魔术方法:__callStatic
// 当调用类中不存在的静态方法时,会调用此方法,传调用的方法名和传的参数
class Class1{
  static public function __callStatic($fun, $params) {
    var_dump($fun, $params);
  }
}

Class1::test(1, 2);

/*
输出:
 string(4) "test"
  array(2) {
    [0]=>
    int(1)
    [1]=>
    int(2)
  }
 */
// 魔术方法:__toString
// 当类被以字符串方式使用时,会调用此方法,无传参
class Class1{
  public function __toString() {
    return 'this is a string';
  }
}

$a = new Class1();
echo $a;

// 输出:this is a string
// 魔术方法:__invoke
// 当被实例化的类被当做一个函数来使用时,会调用此方法,传调用时的参数,且只有一个参数
class Class1{
  public function __invoke($param) {
    return "传进来的内容:{$param}";
  }
}

$a = new Class1();
echo $a(1);

// 输出:传进来的内容:1

PHP中的SPL库还有很多函数,魔术方法也还有很多,可以自行点击上方的超链接打开查看
将这些方法灵活组合运用起来,可以实现更加强大的功能

课程收货

学习到了PHP中更多的基础内容

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP