PHP面向对象

2023-11-03

static静态关键字
  声明类特点和办法为静态,不能够经过类的实例直接拜访。
  类的静态特点不能经过->直接拜访,能够经过 o b j : : obj:: obj::name来拜访。
  静态办法能够经过类的实例来拜访。
  <?php
  classPerson
  {
  publicstaticKaTeX parse error: Expected 'EOF', got '}' at position 71: …sissay";   }   }̲   echoPerson::name;//miss
   p e r s o n = n e w P e r s o n ( ) ;     e c h o person=newPerson();   echo person=newPerson();  echoperson:: n a m e ; / / m i s s 经 过 类 实 例 : : 静 态 变 量 来 拜 访     name;//miss经过类实例::静态变量来拜访    name;//miss::访  person->say();//thisissay类实例拜访静态办法
  抽象类
  抽象类不能实例化,能够被其他类承继。
  只要类中有一个办法是抽象办法,则该类便是抽象类。
  子类承继了抽象类,子类完成父类抽象办法的拜访操控润饰符只能持平或更宽松。
  接口
  接口指定了完成该接口的类有必要完成的办法,在接口中不需要界说这些办法的具体完成。
  接口中一切办法有必要是公有的(public).
  接口能够被子接口承继。
  接口中能够界说常量。
  匿名内部类
  匿名内部类被嵌入到普通的类中时,无法运用类的特点和办法,能够extends外部类,来运用外部类的特点和办法。
  <?php   classOuter   {   public$name=”Miss”;   protected$age=10;   private$code=201;   publicfunctionsay()   {   returnnewclassextendsOuter{   publicfunctionsay()   {   echo"nageis".$this->age;//10   }   };   }   }   $outer=newOuter();   $inner=$outer->say();   $inner->say();   #重载   *PHP的重载是指动态的创立类的特点和办法,与其他语言的重载(同一个办法名,不同的办法参数)不是同一个意思。   *只要调用未界说或者不行的类的特点和办法时,重载的戏法函数才会调用。   >类的不行拜访的特点的重载   <?php   classPerson   {   private$data=[];//用来存储不行拜访的特点和值   publicfunction__set($name,$value)   {   $this->data[$name]=$value;   }   publicfunction__get($name)   {   if(array_key_exists($name,$this->data))   {   return$this->data[$name];   }   returnnull;   }   publicfunction__isset($name)   {   returnarray_key_exists($name,$this->data);   }   publicfunction__unset($name)   {   unset($this->data[$name]);   }   }   $person=newPerson();   $person->name=“hello”;   echo“nameis“.$person->name.”<br>“;//hello   echo“ageis“.$person->age.”<br>“;//没有值   var_dump(isset($person->name));//true   var_dump(isset($person->age));//false   unset($person->name);   echo“nameis“.$person->name.”<br>“;//没有值   >类的不行拜访的办法的重载   <?php   classPerson   {   publicfunction__call($funName,$arguments)   {   echo“functionnameis“.$funName.”argumentsis“.join(‘,’,$arguments);   }   publicfunction__callStatic($funcName,$arguments)   {   echo"staticfunctionnameis".$funName."argumentsis".join(',',$arguments);   }   }   $person=newPerson();   $person->say(“Miss”,”Eddy”);//functionnameissayargumentsisMiss,Eddy   Person::phone(“Miss”,18811773009);//staticfunctionnameisargumentsisMiss,18811773009   #遍历目标   >目标能够运用foreach来便利特点。便利的特点为当前可见特点。   <?php   classPerson   {   private$code=20169107;   protected$age=21;   public$name="Miss";   public$class=1601;   publicfunctionsay()   {   foreach($thisas$key=>$value)   {   echo$key."=>".$value."<br>";   }   }   }   $person=newPerson();   foreach($personas$key=>$value)   {   {   echo$key.”=>”.$value.”<br>“;   }   }   $person->say();   //输出   在目标外,只要public特点可见   name=>Miss   class=>1601   在目标内,一切特点可见(不考虑承继)   code=>20169107   age=>21   name=>Miss   class=>1601   >完成Iterator接口   <?php   classPersonimplementsIterator   {   private$arr=[];   publicfunction__construct($arr)   {   $this->arr=$arr;   }   publicfunctioncurrent()   {   $current=current($this->arr);   echo“current=”.$current.”<br>“;   return$current;   }   publicfunctionkey()   {   $key=key($this->arr);   echo“keyis“.$key.”<br>“;   return$key;   }   publicfunctionnext()   {   $next=next($this->arr);   echo“nextis“.$next.”<br>“;   return$next;   }   publicfunctionrewind()   {   echo“rewinding<br>“;   rewind($this->arr);   }   publicfunctionvalid()   {   echo“validatingandcurrentis”.$this->current();   if($this->current()!=false)   {   returntrue;   }   returnfalse;   }   }   $person=newPerson([12,11,10]);   foreach($personas$key=>$value)   {   {   echo$key.”=>”.$value.”<br>“;   }   }   $person->say();   //输出   rewinding   current=12   validatingandcurrentis12current=12   current=12   keyis0   0=>12   nextis11   current=11   validatingandcurrentis11current=11   current=11   keyis1   1=>11   nextis10   current=10   validatingandcurrentis10current=10   current=10   keyis2   2=>10   nextis   current=   validatingandcurrentiscurrent=   #Final关键字   *final只能润饰类和办法,不能润饰特点。润饰类则该类无法被承继,润饰办法,则该办法无法被重写。   #目标仿制   *能够运用clone进行目标的仿制,目标的仿制为一个浅复制,一切的引证特点仍指向本来的值。   *当目标仿制完成后,假如类中有__clone戏法办法,该办法将会在新复制的目标中进行调用。   >clone的用法:   <?php   classInner{   public$name=”miss”;   }   classOuter{   public$inner;   public$age=10;   }   $outer=newOuter();   $outer->inner=newInner();   $anoter=clone$outer;   $anoter->inner->name=”eddy”;   $anoter->age=20;   echo$outer->age;//10   echo$outer->inner->name;//eddy   *###深复制的完成方式   >运用__clone戏法办法:   <?php   classInner{   public$name=”miss”;   }   classOuter{   public$inner;   public$age=10;   publicfunction__clone()   {   $this->inner=clone$this->inner;   }   }   $outer=newOuter();   $outer->inner=newInner();   $anoter=clone$outer;   $anoter->inner->name=”eddy”;   $anoter->age=20;   echo$outer->age;//10   echo$outer->inner->name;//miss此处在目标内进一步复制了引证变量   >目标的序列化和反序列化:   <?php   classInner{   public$name=”miss”;   }   classOuter{   public$inner;   public$age=10;   }   $outer=newOuter();   $outer->inner=newInner();   //$anoter=clone$outer;   $serializeOuter=serialize($outer);   $anoter=unserialize($serializeOuter);   $anoter->inner->name=”eddy”;   $anoter->age=20;   echo$outer->age;//10   echo$outer->inner->name;//miss不会改变复制目标的引证变量   #目标比较   *==假如两个目标的特点和特点值持平,而且为同一个类的实例,则持平   *===假如两个目标变量指向同一个实例(目标的赋值、复制和引证),则持平。   <?php   functioncompare(&$obj1,&$obj2)   {   echo“obj1==obj2:”.($obj1==$obj2).”<br>“;   echo“obj1!=obj2:”.($obj1!=$obj2).”<br>“;   echo“obj1===obj2:”.($obj1===$obj2).”<br>“;   echo“obj1!==obj2:”.($obj1!==$obj2).”<br>“;   }   classPerson{   public$name;   }   $personOne=newPerson();   $personOne->name=”hello”;   $personTwo=$personOne;   $personThree=newPerson();   $personThree->name=”hello”;   $personFour=&$personOne;   echo‘<br>compare($personOne,$personTwo):<br>‘;   compare($personOne,$personTwo);   echo‘<br>compare($personOne,$personThree):<br>‘;   compare($personOne,$personThree);   echo‘<br>compare($personOne,$personFour):<br>‘;   compare($personOne,$personFour);   //输出   compare($personOne,$personTwo):   obj1==obj2:1   obj1!=obj2:   obj1===obj2:1   obj1!==obj2:   compare($personOne,$personThree):   obj1==obj2:1   obj1!=obj2:   obj1===obj2:   obj1!==obj2:1   compare($personOne,$personFour):   obj1==obj2:1   obj1!=obj2:   obj1===obj2:1   obj1!==obj2:   #类型束缚   [类型束缚具体介绍](https://segmentfault.com/a/1190000007226476)   #后期静态绑定   [后期静态绑定具体介绍](https://www.jb51.net/article/136794.htm)   #目标和引证   *php的引证便是另取了一个别号,两个不同的变量称号指向相同的内容。   *当目标作为参数传递、回来和赋值给另一个变量时,这些都不是目标的引证,仅仅他们都保存这一个和本来目标相同标识符的复制。   <?php   classPerson{   public$name;   }   classHero{   public$name;   }   $personOne=newPerson();   $personOne->name="Miss";   $personTwo=$personOne;   $personTwo->name="eddy";   echo$personOne->name;//eddy   functiongetAnoter($person)   {   $person->name="eddy";   }   getAnoter($personOne);   echo$personOne->name;//eddy   functiongetCopy($person)   {   $person=newHero();   $person->name="Jack";   return$person;   }   $hero=getCopy($personOne);   echo$hero->name.'<br>';//hero   echo$personOne->name;//Miss   functiongetRef(&$person)   {   $person=newHero();   $person->name="Jack";   return$person;   }   $hero=getRef($personOne);   echo$hero->name.'<br>';//Jack   echo$personOne->name;//Jack
  目标序列化
  序列化目标,能够运用serialize()函数回来的一个字符串来表明。序列化目标将会保存目标一切的变量、类的称号,可是不会保存目标的办法、类的常量、静态变量。
  反序列化,能够运用unserialize(),可是这个目标应在反序列化之前界说。因而当在另一个文件中反序列化目标时,能够经过include或require引进包含该类的文件文件或者运用
  spl_autoload_register()来完成。
  sleep和wakeup戏法办法
  能够运用sleep()和wakeup()戏法办法,对序列化和反序列化事情挂钩子。还能够运用__sleep()办法序列号目标的部分变量。
  __wakeup
  unserialize在反序列化之前,会查看类中是否存在一个__wakeup的办法,如存在会优先调用。
  __sleep
  同理,在序列化之前,调用__sleep办法,该办法回来一个包含目标应该被序列化的特点的数组。关于较大的目标,该办法能够将目标部分保存。
  classPerson{
  public n a m e ;     p u b l i c name;   public name;  publicyear;
  privateKaTeX parse error: Expected group after '_' at position 22: … publicfunction_̲_wakeup()   {  …name)
  {
   t h i s − > n a m e = this->name= this>name=name;
  }
  }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP面向对象 的相关文章

  • 禁用/启用用户访问/下载,但允许 php 编辑 - 使用 chown 和 chmod

    我想 move uploaded files到某个文件夹 比方说http localhost myproject protected 并且 PHP 应该能够rm mv cp 里面的一切protected 例如 启用 禁用用户对任何文件的访问
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt
  • file_get_contents,HTTP 请求失败

    我尝试使用以下方式从另一个网站获取内容file get contents但我总是收到 无法打开流 HTTP 请求失败 allow url fopen 已打开 并且我已经在防火墙关闭的情况下进行了测试 但还是会出现这种情况 请问还有什么原因呢
  • Facebook 扩展权限

    更新2 好的 通过更改使其 有点 工作 loginUrl facebook gt getLoginUrl array canvas gt 1 fbconnect gt 0 req perms gt publish stream next g
  • 这是过滤数据并防止 SQL 注入和其他攻击的安全方法吗?

    我创建了两个简单的函数来在插入数据进入 mysql 查询之前对其进行过滤 对于表单字段 我还使用正则表达式来单独检查每个字段 Form filter function filter var HTML is not allowed var s
  • 如果端口不是 80,.htaccess 重定向到错误页面

    我正在运行一个便携式服务器 http www server2go web de 通过 USB 棒 问题是我还在我的本地计算机上安装了 WAMP 并且 Apache 不知何故在 Windows 启动时启动 因为一些我现在不记得的随机原因并且无
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • PHP正则表达式替换链接url

    我需要添加href 之前http 如果这http 不遵循href or src 以下代码部分有效 部分意味着它考虑 a href 只但不src a s i a href target blank gt 0 a str 预先感谢各位的回复 s
  • 带摘要的 php curl 返回两个响应

    我发现了一个 奇怪 的 php CURL 行为 这让我抓狂 基本上我正在做的是使用curl 进行摘要身份验证的调用 这是我的代码的摘录 curl setopt this gt c CURLOPT HTTPAUTH CURLAUTH DIGE
  • phpenmod 显示其他 php 版本的路径

    我的 Ubuntu 机器上安装了 php 7 0 和 7 2 当我执行时php v 它告诉我我正在使用 php 7 2 在 Apache 上我还启用了 php 7 2 当我跑步时phpenmode zip 我明白了 WARNING Modu
  • 很简单的PHP加法问题

    我想我已经关注这个问题太久了 为什么这段代码打印 no 它应该打印 yes 不是吗 我在 PHP 5 3 和 PHP 5 2 上尝试过 都打印 no See 比较浮点数 http www cygnus software com papers
  • 我应该在 Symfony 中哪里放置既不是控制器也不是模型的类?

    对于我的应用程序包 我需要一些既不是控制器也不是模型的类 例如 我想要一个scorecard具有诸如 技能 效率 美丽 等成员的类 此外 它可能具有诸如 meanScore 之类的成员方法 getters 这样的类在 Symfony 框架中
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • 从 PHP 启动守护进程

    对于网站 我需要能够启动和停止守护进程 我目前正在做的是 exec sudo etc init d daemonToStart start 守护进程已启动 但 Apache PHP 挂起 做一个ps aux透露sudo它本身变成了僵尸进程
  • Symfony2 - 在自定义验证器中调用 EmailValidator

    我正在创建一个自定义验证器约束来验证 联系人 类似于 John Doe 电子邮件受保护 gt 遵循Cookbook http symfony com doc current cookbook validation custom constr
  • Yii2 无效调用:设置只读属性

    我有一个Post具有多对多关系的模型Tags 在 Post 模型中定义 public function getTags return this gt hasMany Tags className id gt tag id gt viaTab
  • 将 Hbase 与 PHP 集成 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经安装了 Hbase 现在我正在寻找一些 PHP 库来将 hbase 与 PHP 集成 我尝试了 2 个库 第一个是我尝试与 th
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 如何画出广义表的存储结构

    这部分王道书没有提到 但是自主命题的学校考过这种题 为了方便自己复习 所以写的方法比较通俗 方便理解 例 画出广义表 a x y x 的存储结构 分析 可以这么理解 1 一个完整的括号相当于一个节点 一个字母也是 2 括号内的东西 都是它的
  • 【Cross-Chain】Xscope 跨链交易攻击检测

    本次解读的文章是 2022 年发表于 ASE IEEE ACM International Conference on Automated Software Engineering 的跨链交易攻击检测论文 本篇论文首先对跨链交易的工作流进行
  • 方法锁,对象锁,类锁的区别和用法

    在java编程中 经常需要用到同步 而用得最多的也许是synchronized关键字了 下面看看这个关键字的用法 因为synchronized关键字涉及到锁的概念 所以先来了解一些相关的锁知识 java的内置锁 每个java对象都可以用做一
  • 基于stm32的智能婴儿床(毕业设计)

    整体图 最后有视频演示 设备功能说明 检测床内温度 检测婴儿状态 配置RTC实时时间 电机PWM按键三档调速 自动开关加热器 发送温度到手机终端 把所有要呈现的状态通过OLED屏幕显示 元件清单 主控 stm32f103c8t6 导线 若干
  • C#中的Dictionary字典类介绍

    关键字 C Dictionary 字典 作者 txw1958原文 http www cnblogs com txw1958 archive 2012 11 07 csharp dictionary html 说明 必须包含名空间System
  • 提升周末休息体验感的方法

    工作以后常常容易感到疲于奔命 即使在周末也没有得到高质量的休息 打工人 学生党如何过周末 你有哪些延长周末和下班时间的好方法吗 文章目录 周末休息之我见 提升周末体验的方法 精神休息方法 肉体休息方法 总结 周末休息之我见 在我看来 提升周
  • Android Studio 记事本

    1 目录结构 Text Database是对SQLite的数据进行增删该查 MainActivity中主要实现了长按后上下文菜单的弹出 实现删除功能 跳转到其他的Activity等 Add Text实现对文本的增加 textBean对文本的
  • goland编译部署linux,使用Goland写代码,最后如何在Centos7Linux环境下去部署运行?...

    前言 Go语言入门菜鸡 一直在用Goland写代码 因为vim配置Go的开发环境简直不要太难 放弃了 一直很困惑 我如何在Windows下编写代码 然后再拿去Linux下去部署运行 原来一直以为需要把代码弄过去 然后编译 运行 不懂得交叉编
  • arcgis如何统计一定区域内的数值的平均值、最小值、最大值

    根据以下帖子整理 https www cnblogs com tiandi p 7648417 html https blog csdn net lijie45655 article details 49132437 https blog
  • 利率上浮100bp是什么意思,利率浮动值60BP什么意思

    LPR利率 123BP 是什么概念 1 LPR意思是利率 BP的意思是基点 一个基点为0 01 如果利率是4 8 那么LPR利率 123BP的概念是4 8 1 23 6 03 2 用户在办理贷款时不同的银行给出的加点数不同 这时可以选择低的
  • FCRA考试答案100分

    2022 02 26考试后整理了正确答案 判断题共21题 1 在报表设计好后 在所有浏览器下显示的样式都是一模一样的 错误 2 可以不用设置重复标题行或列而直接设置分页预览下的冻结行和列 错误 3 在帆软认证体系中 FCRA等级比FCRP等
  • OLED透明屏:如何选择合适的OLED透明屏供应商?定制、安装、生产

    引言 OLED透明屏作为一种创新的显示技术 正逐渐占领市场并在各个行业中得到广泛应用 在这篇文章中 尼伽将为您提供OLED透明屏的品牌排名 制造过程和安装要点的综合指南 结合相关调查数据和报告 详细介绍该技术的优势和前景 一 OLED透明屏
  • 网络安全开篇

    WAS Web Application Security OWASP Open Web Application Security Project OWASP Top10 这是每年的一份关于web应用的十大威胁安全报告 会在经过安全专家的测验
  • 两个数组的交集、有效的完全平方数、字符串中的第一个唯一字符

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 百日刷题计划 第 14 100 天 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 位于半山腰的
  • unity全免费下载资源网站

    www unityfly com unity项目源代码插件模型场景免费资源学习分享 unity爱心飞扬下载站 本站建立的初心是 为兄弟姐妹们 学习unity游戏应用开发 免费提供便利和支持 欢迎光临本站
  • Java几种常见的设计模式

    本文来自 旭日Follow 24 的CSDN 博客 全文地址请点击 https blog csdn net xuri24 article details 81106656 utm source copy 一 单例模式 基本概念 保证一个类仅
  • 关于在Idea调试的时如何显示16进制的处理

    关于在Idea调试的时如何显示16进制的处理 右击字节数组 然后选择 View as 再选择 Create 添加对byte 的处理 给个名称 并给个表达式 处理表达式如下 int len this length StringBuilder
  • 悦起无盘客户端怎么连服务器,Staxel怎么联机 直连以及服务器连接教程

    手机游戏自身是适用联网一起玩的 不如说是联网才有趣 假如你不清楚怎样联网得话 看一下大家为大伙儿产生的Staxel怎么联机的实例教程吧 手机游戏自身是适用联网一起玩的 不如说是联网才有趣 假如你不清楚怎样联网得话 看一下大家为大伙儿产生的S
  • CSS核心使用

    CSS核心使用 box sizing box shdow text shadow position writing mode box sizing 定义计算一个元素的总高度和总宽度 属性值 content box 默认值 width 内容宽
  • PHP面向对象

    static静态关键字 声明类特点和办法为静态 不能够经过类的实例直接拜访 类的静态特点不能经过 gt 直接拜访 能够经过 o b j obj obj name来拜访 静态办法能够经过类的实例来拜访