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();
?>

  

posted @ 2024-07-08 21:59  好好学习天天向上上上  阅读(4)  评论(0编辑  收藏  举报