oop面向对象编程学习
<?php // array_walk() array_map() array_filter() // 可以使用用户自定义的函数对数组中的每个元素做回调处理 成功返回true 失败返回false $fruits = array('a'=>'apple','b'=>'banana', 'o'=>'orange','l'=>'lemon'); $fav = 'orange'; function test(&$item,$key,$prefix) { $item = "$prefix:$key=>$item"; } array_walk($fruits,'test','fruit'); echo '<pre>'; print_r($fruits); echo '<hr>'; // 2.(简化) array_walk($fruits,function(&$item,$key,$prefix) { $item = "$prefix:$key=>$item"; $item = "$prefix:$key=>$item"; $item = "$prefix:$key=>$item"; $item = "$prefix:$key=>$item"; },'fruit'); echo '<pre>', print_r($fruits); // array_map(callback,arr1,arr2...) // 返回是回调处理后的数组 $arr = array_map(function($v){ if($v>25) return $v; },[25,12,521,58,556]); echo '<pre>'; print_r($arr); // 使用array_filter()使用回调函数过滤数组的元素 返回是过滤后的数组 $arr = array_filter($arr); print_r($arr); // array_values()给数组的键重新排序,从0递增 $arr = array_values(array_filter($arr)); print_r($arr); // 使用array_filter一次性完成筛选 然后使用array_values()键从0递增排序的结果 $res = array_values(array_filter([25,12,521,58,556],function($v){ return $v>25; })); echo '<pre>'; print_r($res); // ?>
<?php // 1.变量 实现数据的复用 函数是实现代码块的复用 // 2.类是具有相同属性和方法的对象集合 // 3.对象是复合数据类型 // 4.oop 三大特性:封装 继承 多态 // 5.封装:隐藏对象的属性或方法(实现细节),目的是为了控制在程序中属性的读或者修改的访问级别,使用者只需要通过外部接口以特定的权限来使用类成员 class Player{ // 成员属性 前一定要有 访问修饰符 public protected private public $name;//抽象属性 null public $height; public $team; // protected只能被本类和子类访问 protected $playNump = 18; // 只能被本类访问 private $weight; // 如何给 protected private属性赋值 // __construct()魔术方法构造函数 构造器 类实例化一次就被自动调用一次 // __get __set __call __callStatic public function __construct($name,$height,$team, $playNump,$weight) { // 1.初始化类成员 让类/实例化的状态稳定下来 // 2.给对象属性进行初始化赋值 // 3.可以给私有成员,受保护的成员初始化赋值 $this->name = $name; $this->height = $height; $this->team = $team; $this->playNump = $playNump; $this->weight = $weight; } public function jog() { // $this 本对象 return "$this->name is jogging,whose playNum is $this->playNump<br>"; } public function shoot() { return "$this->name is shooting,weighing $this->weight<br>"; } } // // 类的实例化 new $j对象引用 // $jordan = new Player; // $james = new Player; // //对象成员的访问 对象引用->属性名称/方法名称() // $jordan->name = 'xiaoqi'; // $james->name = 'youyou'; // echo $james->name.'<br>'; // echo $james->jog(); // echo $jordan->name.'<br>'; // echo $jordan->jog(); // // echo $j->playNump // $jordan = new Player('Jordan','205cm','Bulk',23,'80kg'); // echo $jordan->name.'<br>'; // echo $jordan->shoot(); ?>
<?php // 客户端代码 调用封装的类 // 1.加载类文件 require 'Player.php'; // 2.new 类的实例化 $o = new Player('Jordan','205cm','Bulk',23,'80kg'); echo $o->shoot(); ?>
<?php // 类的自动加载 前提 类名称与类文件名称保持一致 spl_autoload_register(function($className) { require $className .'.php'; }); // 2.new 类的实例化 $o = new Player('Jordan','205cm','Bulk',23,'80kg'); echo $o->shoot(); ?>