`

php5 读书心得(1)

阅读更多
由于工作中要用到PHP,最近下了本《PHP5 POWER PROGRAMMING》在读,外文的,还不错,打算写些读书心得,可能会零散些。这次讲的是多态。

    首先看一个例子,是讲动物发出的叫声的。
class Cat {
    function miau()
    {
        print "miau";
    }
}

class Dog {
    function wuff()
    {
        print "wuff";
    }
}

function printTheRightSound($obj)
{
    if ($obj instanceof Cat) {
        $obj->miau();
    } else if ($obj instanceof Dog) {
        $obj->wuff();
    } else {
        print "Error: Passed wrong kind of object";
    }
    print "\n";
}

printTheRightSound(new Cat());
printTheRightSound(new Dog());

    这里输出的是:
miau(猫的叫声)
wuff(狗的叫声)
     熟悉OOP的都知道,这个例子扩展性不好,因为如果你要加入更多动物的话,需要用很多个IF ELSE来判断,而且要重复写很多代码,有了多态后,就好办了。PHP5中终于有多态这东西了,多个子类可以扩展继承父类,上面的例子改写如下:
   class Animal {
    function makeSound()
    {
        print "Error: This method should be re-implemented in the children";
    }
}

class Cat extends Animal {
    function makeSound()
    {
        print "miau";
    }
}

class Dog extends Animal {
    function makeSound()
    {
        print "wuff";
    }
}

function printTheRightSound($obj)
{
    if ($obj instanceof Animal) {
        $obj->makeSound();
    } else {
        print "Error: Passed wrong kind of object";
    }
    print "\n";
}

printTheRightSound(new Cat());
printTheRightSound(new Dog());
可以看出,这个时候,无论增加什么动物,printtherightsound方法是不需要 进行任何修改的了!当然,大家学过OOP的可以看出,这个例子可以进一步修改,就是将ANIMAL声明为抽象基类拉。
分享到:
评论

相关推荐

    10红灰简约心理读书交互动态全套网站源代码.rar

    这个网站模板以红色和灰色为主色调,旨在提供一个既美观又实用的在线平台,让用户能够分享读书心得,进行心理学知识的探讨与互动。下面将详细讲解涉及的IT知识点。 1. HTML(超文本标记语言):HTML是网页内容的...

    PHPWind论坛 古色书香

    例如,可以添加图书分享插件,让用户分享读书心得,推荐好书;或是设立诗词鉴赏版块,鼓励用户创作和讨论文学作品。这些功能的增加将进一步强化“古色书香”的主题,丰富论坛的内容。 总的来说,“PHPWind论坛 古色...

    商业源码-编程源码-08CMS小说系统 简体UTF8.zip

    它可能包含评论、评分、书单推荐等功能,用户可以分享读书心得,与其他读者交流,增加用户黏性。此外,还可能有书友圈、论坛等社区板块,进一步增强用户之间的互动。 安全方面,08CMS考虑到了数据保护和访问权限。...

    图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统

    在实际开发中,"MyBBS"可能代表该图书管理系统中的论坛或讨论区部分,它允许用户交流读书心得、推荐书籍,或者讨论与图书相关的各种话题,增强系统的互动性和社区氛围。 实现图书管理系统通常采用B/S架构,即浏览器...

    itclub

    如果您不想读书,可以使用帮助。 Laracasts包含1500多个视频教程,涉及各种主题,包括Laravel,现代PHP,单元测试和JavaScript。 深入我们全面的视频库,提高您的技能。Laravel赞助商我们要感谢以下赞助商为Laravel...

    leetcode答案-programming:编程相关

    此外,“读书笔记及其它”可能包含作者阅读技术书籍的心得体会或者是非代码形式的学习资料。最后,“GitHub项目”可能是指作者公开的代码仓库,这些项目可能包含实战应用或者是对LeetCode问题的实现。 【标签】:...

    知名网站简要论述.doc

    7. **网上读书园地(.readfree.net/bbs/index.php)**:免费阅读电子书籍的好去处,对于喜欢阅读的人来说是个福音。 8. **零点花园(.soudoc./)**:集合了各类文档资源,包括电子书、报告、论文等,方便搜索和下载...

    tlb:供个人使用和小型团队使用的联合Wiki。 追踪您的项目和爱好

    3. **个人兴趣记录**:对于个人用户,tlb可以用来记录个人爱好,如旅行日记、读书笔记、编程学习心得等,方便日后回顾和分享。 4. **教育应用**:教师和学生可以利用tlb创建课程资料库,学生也可以在这里记录学习...

    腾讯云个人博客系统 v2.6.1.2

    同时,四个顶级栏目的设定使得内容结构更有序,比如可以设置为“技术分享”、“生活随笔”、“旅行日记”和“读书心得”等不同类别,方便读者快速找到感兴趣的内容。 系统的稳定性和安全性也是关键,腾讯云作为知名...

    研究生应该常去的网站

    #### 网上读书园地(http://www.readfree.net/bbs/index.php) **知识点概述:** - **网站性质**:一个电子图书共享平台。 - **资源特点**:提供多种类型的电子书籍,覆盖各个学科领域。 - **应用场景**:适合研究...

    bookblog-开源

    今天我们要探讨的“bookblog-开源”项目,就是一个基于这一理念的实用工具,它帮助热爱阅读的人们记录自己的读书体验,并与世界分享。 该项目的核心功能是提供一个在线平台,用户可以在这个平台上创建个人的书评...

    journal:一个做笔记的地方

    在这个项目中,用户可以记录技术类和非技术类的信息,比如读书笔记、编程学习心得、工作想法等。 描述中的"技术和非技术著作在这里"进一步确认了这个项目具有多样性,不仅限于IT领域的知识,还涵盖了其他领域的著作...

Global site tag (gtag.js) - Google Analytics