首页 > 编程语言 >oop面向对象编程学习

oop面向对象编程学习

时间:2024-07-08 22:09:12浏览次数:15  
标签:arr name echo 学习 item prefix oop 面向对象编程 array

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

  

标签:arr,name,echo,学习,item,prefix,oop,面向对象编程,array
From: https://www.cnblogs.com/QWD7986/p/18290772

相关文章

  • Asun安全学习【漏洞复现】CVE-2023-38831 WinRAR代码执行漏洞
    (ps:本人是小白,复现漏洞来进行安全学习,也借鉴了许多大佬的研究内容,感谢各位大佬进行指导和点评。)[漏洞名称]:CVE漏洞复现-CVE-2023-38831WinRAR代码执行漏洞[漏洞描述]:WinRAR是一款功能强大的Windows文件压缩和解压缩工具,支持高效的压缩算法、密码保护、分卷压缩、恢复记录等......
  • 深度学习全景进阶:最新Python深度学习进阶与前沿应用
    近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。系统掌握AI新理论、新方法及其Python代码实现。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、SwinTransformer等)、生成式模型(变......
  • 《昇思25天学习打卡营第12天|计算机视觉-ResNet50迁移学习》
    ResNet50迁移学习在实际应用场景中,由于训练数据集不足,所以很少有人会从头开始训练整个网络。普遍的做法是,在一个非常大的基础数据集上训练得到一个预训练模型,然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。本章将使用迁移学习的方法对Imag......
  • 蓝桥杯单片机学习总结(Day1 实现LED闪烁)
    标题一:通过SM74HC138译码器打开控制8个LED灯的寄存器标题二:编程思路标题三:总结 打开LED寄存器: 由开发板的原理图可知其8个LED灯的寄存器开关为SM74HC138译码器(以下用38译码器称代)的Y4口,该38译码器的输入端P25~P27,其分别对应P25->SM74HC138_A、P26->SM74HC138_B、P27->S......
  • 01day C++初入学习
    这里写目录标题1.C++区别于C的输入输出2.什么是命名空间3.namespace的定义namespace的使用(1)namespace嵌套使用(2)多⽂件中可以定义同名namespace(3)4.命名空间的使用5.C++输⼊&输出6.缺省参数7.函数重载8.引用8.1引用的特性8.3引用的使用1.C++区别于C的输入输出......
  • SpringCloud学习
    认识微服务1.单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署优点:架构简单部署成本低缺点:耦合度高2.分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务优点:降低服务耦合度有利于服务升级拓展缺点:配置环境增多考虑问题:服务......
  • 深度学习中的正则化技术 - 引言篇
    序言在深度学习中,正则化技术是防止模型过拟合、提升泛化能力的关键策略。随着模型复杂度的增加,过拟合风险也随之上升。正则化通过引入额外约束或信息,调整模型训练过程,旨在简化模型结构,使其学习到数据中的本质特征而非噪声,从而在保证训练效果的同时,提高模型对新数据的适应能......
  • ts学习笔记
    1、ts简介以js为基础构建的语言,是js的超集,拓展了js并添加了类型,可以在任何支持js的平台执行。但是ts不能被js解析器直接执行,需要编译为js才能执行。  ts新加了类型,像枚举、any、接口、字面量等   Ts支持ES的新特性   Ts可以被编译成任意版本的js,方便兼容2、ts环......
  • 无问社区——让网安学习更简单的平台
    前言我们深知学习网络安全的不易,为此我们团队打造了一款免费学习网络安全技术的平台--无问社区(wwlib.cn),让学习技术更加简单。平台目前虽仅有千篇文章,但面向学习的深度广,有适合萌新学习的知识介绍和工具总结,有适合网络安全爱好者的漏洞分析和漏洞实战教学,有适合安全服务人员的......
  • 学习canvas(一些常用api)
    当然,以下是这些常用CanvasAPI的总结,按照Markdown格式编写:常用CanvasAPI总结1.获取绘图上下文constcanvas=document.getElementById('myCanvas');constctx=canvas.getContext('2d');//或'webgl'2.绘制矩形ctx.fillStyle='blue';ctx.fillRect(1......