面向对象

【类和对象的基本使用】
类的声明
调用 属性、方法

    //声明类

    class Cat
    {
        定义属性
        public $name = '咪咪';
        $sex = null定义方法
        public function jiao()
        {
            echo '喵喵~';
        }
    }

    实例化
    $c1 = new Cat();
    var_dump($c1);

    调用 属性、方法
    echo $c1->name;
    jiao();

    $c1->sex = '母';
    $c1->sex;

传递赋值和引用赋值

    $a = 'abc';

    $b = $a;传递赋值
    $c = &引用赋值

    $a);abc
    $b);$c);abc

    $a = 'qq';

    qq
    qq

对象的传递赋值

     MyClass
    {
        $str = 'abc';
    }

    $a = new MyClass(); $a 存的是对象的标识符

    传递赋值 把标识符 赋值给 $b


    $str = 'abc'
    $str = 'abc'

    $a->str = '456';对象的属性改变了
    //$a $b 存的 仍是 对象标识符
    str = '456'
    str = '456'


    $a = 123int 123
    对象标识符str = '456'

对象的引用赋值

    $b = &引用赋值 把$a的引用 赋值给 $b

    str = 'abc'
    str = 'abc'

    $a->str = '123'str = '123'
    str = '123'

    int 123

【封装】
访问控制 public protected private

    $a = 'public'protected $b = 'protected'private $c = 'private';
        
         test()
        {
            类内部调用
            $this->a;public
            $this->b;protected
            $this->c;private
        }
    }


    $obj =  MyClass;
    类外  以 对象的方式调用
    $obj->a;public
    $obj->b;报错
    $obj->c;报错

    $obj->test();

构造函数:对象被实例化时调用

     __construct()
        {
            echo '调用了__construct <br>';
        }
    }

    $obj1 = new MyClass;调用了__construct
    $obj2 = new MyClass();调用了__construct

析构函数:对象被销毁时调用

     __destruct()
        {
            echo '对象被销毁了' MyClass();

    null;对象被销毁了
    unset($obj);exit('结束掉');结束掉对象被销毁了

静态属性与静态方法 static

    static $a = 'static'$b = '123123'static  func1()
        {
            echo '静态方法调用';
            echo MyClass::$aecho self::echo '<hr>';
            MyClass::func2();
            ;
            self::不可以用$this去调用
            //echo $this->$a;//Fatal error
            //$this->func2();
        }
         func2()
        {
            echo 'this is static func2';
        }
        
         func3()
        {
            echo 'this is func3'echo '静态属性'echo MyClass::echo self::func2();
            
            echo $this->a;//去调用静态属性 失败
            $this->func2();
        }
        
    }

    $b;非静态调用失败
    MyClass::func1();

     MyClass();
    对象使用-> 去调用静态属性 失败
    $obj->b;
    func1();
    $obj->func3();

常量const

    const NUM = 123;
    }


    NUM;

    MyClass::$a = 'def';

    MyClass::NUM = 456; 报错,常量一经定义不能修改

属性的重载:不可访问的属性

     Person
    {
        $name='小芳'$age=18;protected不可在外部访问

        //触发了不可访问的属性
        function __get($n)
        {
            if($n == 'age'){
                return age;
            }else{
                return '瞎问什么啊';
            }

        }
        
        function __set($n,$vecho '触发了设置不可访问的属性'.$n.'值为'.;
            $this->$n = function __isset(echo '判断一个不可访问的属性是否存在'.function __unset(echo '销毁一个不可访问的属性'.;
        }
        
    }

    $xiao =  Person();

    $xiao->age;18
    $xiao->xxx;瞎问什么啊

    $xiao->age = 11;设置不可访问的属性age值为11
    11

    isset($xiao->age);判断一个不可访问的属性是否存在age
    销毁一个不可访问的属性age
    判断一个不可访问的属性是否存在age

方法重载:不可访问的方法

     MyClass
    {
        
        protected function func(echo '这是一个不可访问的方法'echo '参数是'.function __call($name,1)">$argecho '触发了不可访问的方法'$name);方法名称  func
            $arg);参数
    //        array(2) {
    //                [0] =>
    //          string(3) "aaa"
    //                [1] =>
    //          int(123)
    //        }
        }

        echo '受保护的静态方法'function __callStatic(echo '调用了不可访问的静态方法'func2
            );
            array(4) {
    //                [0] =>
    //          int(1)
    //          [1] =>
    //          int(2)
    //          [2] =>
    //          int(3)
    //          [3] =>
    //          int(4)
    //        }
        }
    }

     MyClass();
    $obj->func('aaa',123触发了不可访问的方法

    MyClass::func2(1,2,3,4调用了不可访问的静态方法

【继承】
类的继承

     FatherClass
    {
        echo 'public func'echo 'protected func'private echo 'private func';
        }
    }


    class SonClass extends test()
        {
            $this->func1();public方法可以被继承
            $this->func2();protected方法可以被继承
            //$this->func3();//Fatal error:private方法不可以被继承
 SonClass();
    public
    //echo $obj->b;  //fatal error
    //echo $obj->c;     //Notice

    //$obj->func1();
    //$obj->func2();  //fatal error
    //$obj->func3();   //fatal error

    test();
    public func protected func

类的重写

     Father
    {
         shuo()
        {
            echo 'a a o o'class Son echo 'hello'shuo();
            parent::shuo();
        }
    }

     Son();
    $obj->shuo();hello
    $obj->test();helloa a o o

final 修饰类 则该类不能被继承

    final function test()  final 声明之后不能被重写
        {
             Father
    {
        
        echo '你好'报错

【多态】
抽象类abstract

    abstract  MyAbsClass
    {
        $name = '张三'$age;
        }
         func();
    }

    class ChildClass  func()
        {
            
        }
    }

     MyAbsClass
    {

    }

接口interface

    interface MyInterface
    {
         func();
         test();
    }

    class MyClass implements func(){
            
        }
         test(){
            class MyAbsClass  test();
    }

【条件约束和自动加载】
接口的继承

     Ainter
    {
        interface Binter  test();
    }



     Binter
    {
         test()
        {
            
        }
        
         func()
        {
            
        }
    }

判断是否属于某个类的实例

     A
    {
        class B class C  B
    {
         func()
        {
            echo 'ok'class D echo '好的'/*
    B实现了 A
    C、D继承自B
    C、D是兄弟
    */

     C();
     D();
    $arr = [1,3];

    是否属于D的实例
    function test(D )
    {
        ;
    }
    是否属于A的实例
    function test2(A ;
    }

    test($obj2);ok
    //test($obj1);//不属于D的实例
    test2($obj1);ok
    test2(ok

自动加载__autoload

    function __autoload(include 'myclassfolder/'.$a.'.class.php';
    }

    class A  B
    {
        
    }

注册自动装载函数

    function myloader(
    有三个参数
    参数1:需要注册的自动装载函数
    参数2: 如果没有找到参数1的函数 是否抛出异常错误
    参数3: 是否把参数1的函数添加到队列之首
    */
    spl_autoload_register('myloader',true,1)">true B
    {
        
    }

注册自动装载类

     MyLoader
    {
        function l(;
        }
    }
    ['MyLoader','l']
    //spl_autoload_register 第一个参数以数组方式传入
    spl_autoload_register(['MyLoader','l'],1)"> B
    {
        
    }

初始化时自动装载

     init(){
            $this,1)">);
        }
    }

     MyLoader();
    init();
     B
    {
        
    }

【命名空间】
命名空间(函数案例)

    namespace A;
    function time(){
        echo 'my time function <br>';
    }


    namespace B;
    echo 'my space B time function <br>'time(); namespace B time()
    \A\ namespace A time()
    \B\ namespace B time()
    echo \time();     \全局空间

命名空间(类案例)

    namespace A\B;
    echo '空间A\B 中的类 实例化了 <br>';
        }
    }

    namespace A;
    echo '空间A 中的类 实例化了 <br>' 非限定名称
    new \A\B\MyClass(); 完全限定名称
    new \A\MyClass();new B\MyClass();限定名称

打印当前命名空间

    echo __NAMESPACE__;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Online Tours & Travels Management System pay.php sql injectionLine 16 of pay.php invokes a SQL query built using unvalidated input. This call could allow an attacker to modify the statement’s meaning or to execute arbitrary SQL commands.SQL
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在windwos系统搭建typecho博客+cpolar内网穿透工具将博客发布到公共网络环境,实现远程也可以访问和操作。_windows搭建typecho
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代语法,让php更加的优雅的与html生活在一起 -->请放心, 最终生成的,或者说用户最终看到的,仍然是一个html文档, php代码中的内容不会被泄漏的。-- 将php与html代码混编的时候,大括号很容易造成配对错误,最好杜绝它 -->php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析。-- 所以php的流程控制语句, 都提供了替代语法,用冒号代替大括号 -->php echo '百变鹏仔'?_利用php将静态页面修改为动态页面
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔记博文内容涉及 Linux network namespace 认知以及彼此通信Demo,实际中的应用理解不足小伙伴帮忙指正不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树。_linux network namespace 多端通信 模式认知
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了一个逻辑二层(L2)网络,该网络封装在跨 Kubernetes 集群节点的现有三层(L3)网络拓扑上。使用此模型,可以为容器提供一个隔离的 L2 网络,而无需分发路由。封装网络带来了少量的处理开销以及由于覆盖封装生成 IP header 造成的 IP 包大小增加。封装信息由 Kubernetes worker 之间的 UDP 端口分发,交换如何访问 MAC 地址的网络控制平面信息。此类网络模型中常用的封装是 VXLAN、Internet 协议安全性 (IPSec) 和 IP-in-IP。_k8s网络组件对比
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。
文章浏览阅读1.3w次,点赞3次,收藏7次。尽管您可以通过 ping 命令解析出网站的 IP 地址,但是可能在浏览器中访问时仍然遇到问题,这可能是因为浏览器使用的 DNS 解析结果不同于 ping 命令使用的解析结果。可能是因为您的网络或设备上设置了防火墙,阻止了对特定网站的访问。有些国家或组织可能会对特定的域名进行屏蔽,从而阻止访问相关网站。如果您的网络使用代理服务器进行访问控制,可能会由于代理服务器的配置问题导致无法访问某些网站。即使您的网络和设备一切正常,目标网站本身可能也存在问题,例如服务器故障、维护或过载,导致无法访问。_能ping通打不开网页
文章浏览阅读839次,点赞22次,收藏19次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读2.1k次,点赞31次,收藏22次。基于微信小程序奶茶点餐外卖系统设计与实现(PHP后台+Mysql)可行性分析毕设源代码毕业设计,数据安全和系统稳定性以及团队能力和资源配备方面都具备较好的条件。因此,该项目的可行性较高。:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;微信小程序作为一种快捷、方便的移动应用形式,成为很多用户点餐外卖的首选。项目的界面和功能都可以定制,包安装运行!项目配有对应开发文档、开题报告、任务书、PPT、论文模版等。
文章浏览阅读1.8k次,点赞52次,收藏38次。本文主要通过对系统的前台系统和后台管理系统进行了功能性需求分析,对系统的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据系统的功能设计确定了数据库结构,实现完整的代码编写。Lucky+Baby母婴用品网站使用 Dreamweaver、HBuilder代码编辑器、Apache服务器等开发工具,完成了系统的主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、商品搜索功能、生成订单和查看我的订单功能、在线付款功能功能的实现过程。
文章浏览阅读1.5k次,点赞45次,收藏40次。本设计主要实现集人性化、高效率、便捷等优点于一身的人事信息管理系统,完成首页、系统用户、通知公告、部门信息、员工薪资、考勤签到、员工请假、招聘信息、应聘信息等功能模块。
文章浏览阅读1k次。该错误通常出现在数据库读取结果集数据时,比如当我们写好SQL语句从数据库读取数据时,本身应该返回结果集,再给结果集中读取数据。解决思路:这种错误一般是因为echo后面输出了一个数组导致的,或者是数组作为字符串进行拼接运算时导致的。该错误直译为:警告:mysqli_fetch_assoc函数期望参数1是mysqli的结果集,但是给了一个布尔值。这种错误是PHP解析器在解析时遇到了语法错误,直译为:解析错误:语法错误,意料之外的...该错误直译为:提示:未定义的索引:username。_array to string conversion in
文章浏览阅读2.7w次。解决http请求报错context deadline exceeded (Client.Timeout exceeded while awaiting headers)_context deadline exceeded (client.timeout exceeded while awaiting headers)
文章浏览阅读1.3k次,点赞26次,收藏24次。复杂网络是一种由大量相互连接的元素(节点或顶点)组成的网络结构,这些连接通常是非常复杂和动态的。这些网络可以在各种领域中发现,包括社交网络、生物学系统、信息技术和交通系统等。_代理建模
文章浏览阅读2.6k次,点赞76次,收藏71次。epoll详解,事件模型,ET/LT模式,并通过三个示例进行代码实现。
文章浏览阅读3.3k次。罗拉ROLA-IP是一家来自纽约的代理IP提供商,由李嘉诚先生投资建设,韩国人工智能、自动驾驶、虚拟现实方面的领军企业World IT Show投资入股,由美国纽约大学IT管理教授团队研究开发,进入中国市场6年多,全世界设有多个分子公司。接下来,我们要检查代理和防火墙的设置,因为在绝大多数情况下,它们是导致这个错误的原因,尤其是当用户使用免费代理时。对网站的访问受阻实际上是一个非常常见的错误,它既可能是由于物理原因(硬件问题)造成的,也可能是由于软件错误引起的。检查代理设置,并确保其正确配置。_无法访问此网站,检查代理服务器和防火墙
文章浏览阅读1.1k次,点赞14次,收藏20次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。_php洗车服务预约管理系统php源码
文章浏览阅读1.1k次。桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。
文章浏览阅读936次,点赞22次,收藏17次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读822次,点赞15次,收藏14次。在整个设计过程中,要确定可能的具体解决方案,以实现每一个小的最终目标,对于每一个小目标,我们首先必须了解一些相关的需求分析信息。除了以上作品下面是2023-2024年最新100套计算机专业原创的毕业设计源码+数据库,是近期作品,如果你的题目刚好在下面可以文末领取java源码参考。springboot基于springboot的在线考试系统。springboot基于springboot的商城购物系统。springboot基于微信小程序的智慧校园设计与实现。springboot基于用户的协同过滤算法的话题推荐。