`

PHP5心得4

阅读更多

1 instanceof操作
    该操作中,判断某个类是否是另一个类的子类或判断是否类的实例。比如考察下面的例子
  class Rectangle {
    public $name = __CLASS__;
}

class Square extends Rectangle {
    public $name = __CLASS__;
}

class Circle {
    public $name = __CLASS__;
}

function checkIfRectangle($shape)
{
    if ($shape instanceof Rectangle) {
        print $shape->name;
        print " is a rectangle\n";
    }
}

checkIfRectangle(new Square());
checkIfRectangle(new Circle());

其中Square类继承了Rectangle类,而circle类则是单独的。那么,在checkifrectangle中,判断传入来的类是否rectangle的子类。结果输出是'Square is a rectangle\n'.
  其中,_CLASS_是一个特殊的常量,表示的是当前类的名称。

2 抽象类和接口
   抽象类中,只定义了方法的声明部分,而具体的实现是留给其子类去实现的。比如有如下的例子:


abstract class Shape {
    function setCenter($x, $y) {
        $this->x = $x;
        $this->y = $y;
    }

    abstract function draw();
    protected $x, $y;
}

class Square extends Shape {
    function draw()
    {
        // Here goes the code which draws the Square
        ...
    }
}

class Circle extends Shape {
    function draw()
    {
        // Here goes the code which draws the Circle
        ...
    }
}
  其中,形状类是基类,声明了抽象的方法draw,因为不同的图形有不同的“画”的方法。接下来square和circle类都继承了shape类, 并且各自实现了自己的draw方法。
  当一个抽象类的所有方法都是抽象的,那么可以用接口来定义了。本质上来说,接口是一种特殊的抽象类,抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
  比如下面的例子:
 

<?

interface Loggable {
    function logString();
}

class Person implements Loggable {
    private $name, $address, $idNumber, $age;
    function logString() {
        return "class Person: name = $this->name, ID = $this >idNumber\n";
    }
}

class Product implements Loggable {
    private $name, $price, $expiryDate;
    function logString() {
        return "class Product: name = $this->name, price = $this >price\n";
    }
}
class a
{
function printa()
{
print "hello";
}
}

function MyLog($obj) {
    if ($obj instanceof Loggable) {
        print $obj->logString();
    } else {
        print "Error: Object doesn't support Loggable interface\n";
    }
}

$person = new Person();
// ...
$product = new Product();
$a=new a();
MyLog($person);
MyLog($product);
MyLog($a);

 

?>

  

 其中声明了接口Loggable,接下来person和product类都实现了其接口,但类A是单独的,没实现其接口,于是在主程序mylog中,分别判断各对象是否loggable的子类。当然,对A,是输出出错信息的。

3  _AUTOLOAD()功能
   我们在写OOP时,经常是这样的,先比如在一个目录,如include下,先写了很多个基本的类,然后在其他要应用这些类的程序中,用include("xxx/xxxx.php")的功能,来引入这些类。当工程很大时,有的时候经常会忘记include正确的类文件进来了,而且很容易出错。在PHP5中,增添了_autoload()功能了,比如一个例子如下
MyClass.php
<?php

class MyClass {
    function printHelloWorld()
    {
        print "Hello, World\n";
    }
}

?>


general.inc:

<?php

function __autoload($class_name)
{
    require_once($_SERVER["DOCUMENT_ROOT"] . "/classes/ $class_name.php");
}

?>


main.php:

<?php

require_once "general.inc";

$obj = new MyClass();
$obj->printHelloWorld();

?>
  其中,假设在/classes目录下,每个类假设以同名的方式命名PHP文件,如一个叫a的类,以a.php文件来命名。在上面的例子中,在main.php中,没有显式生命类myclass,但是require了general.inc,在这个INC文件中,使用了_autoload方法,自动去classes目录下,找相应的类,这里找到了myclass.php了。看,这样就很方便了,不需要在main.php中,大量写很多的include了,太方便拉

分享到:
评论

相关推荐

    php学习心得 php初学者 php

    PHP 学习心得 PHP 是一门非常流行的服务器端脚本语言,它的应用非常广泛,特别是在 Web 开发领域。本文将总结一些 PHP 学习心得,适合 PHP 初学者快速入门。 1. 变量传递问题 在 PHP 中,变量传递是通过 GET、...

    php入门学习心得

    这里,我将分享一些我在PHP入门学习过程中的心得,希望能对同样对PHP感兴趣的你有所帮助。 首先,PHP是一种开源的脚本语言,这意味着你可以免费获取并使用它,同时有庞大的社区支持和丰富的资源。在学习PHP时,了解...

    PHP学习心得

    php学习心得,是关于php从新手如何学习,如何进步的,以及在php学习过程的一些感悟

    php技术个人学习心得文档

    4. **PHP环境搭建**: 学习PHP需要安装相应的运行环境,最常见的是LAMP(Linux, Apache, MySQL, PHP)或WAMP(Windows, Apache, MySQL, PHP)。Apache是常用的Web服务器,MySQL是关系型数据库管理系统,PHP则负责...

    php培训心得5篇_php学习心得体会.docx

    【PHP培训心得】 PHP,全称“超文本预处理器”,是一种广泛应用于Web开发的开源脚本语言。在PHP培训中,学习者不仅需要掌握语言的基本语法,还要理解其与数据库交互的能力,以及如何构建动态网站。以下是几位学员的...

    php培训心得5篇_php学习心得体会.pdf

    【PHP培训心得】 PHP,全称“超文本预处理器”,是一种广泛用于Web开发的开源脚本语言。PHP的培训和学习对于想要从事网站开发的人来说至关重要。以下是从几篇PHP培训心得中提炼出的关键知识点和经验分享。 1. **...

    PHP、Mysql实训心得体会.doc

    ### PHP、Mysql 实训心得体会 #### 一、学习内容:实训和学习的具体内容 ##### (一) 经典案例 本次实训通过一个简单的 JavaScript 函数 `dialog()` 来展示了一个对话框,其中包含了基本的 HTML 结构和 CSS 框架 `...

    PHP框架Laravel学习心得体会

    4. **Artisan命令行工具**:Artisan是Laravel内置的命令行工具,用于生成控制器、模型、迁移、 seeds等,大大提高了开发效率。 5. **模板引擎**:Blade是Laravel的模板引擎,它允许开发者创建高效的视图,同时支持...

    PHP 使用心得

    在探讨《PHP使用心得》这一主题时,我们深入挖掘了脚本语言PHP的若干关键特性与高级用法,尤其关注了数组操作与缓存机制,这两个方面展现了PHP的强大功能与灵活性。 ### 数组操作:`array_count_values()`, `array_...

    php学习心得.doc

    php学习心得 本文档总结了多个实用的php学习心得,涵盖了php变量传递、win32平台下的Apache和Session配置、错误信息显示、邮件发送、MySQL密码设置、header already sent错误、php.ini修改无效、php安装、SQL语句...

    php工作心得体会.docx

    5. 不断巩固,摸透大部分 PHP 常用函数,并可理解 OOP、MYSQL 优化,以及模板:学习 PHP 需要不断巩固 PHP 的知识,学习 PHP 的函数和语法,理解 OOP、MYSQL 优化和模板等概念。 6. 完成一个功能齐全的动态站点:...

    php培训心得体会.doc

    【PHP培训心得体会】 PHP是一种广泛应用于网页开发的脚本语言,尤其在动态网站构建中扮演着重要角色。在参与PHP培训的过程中,我深感教学方式和实践经验的重要性。以下是我对PHP培训的一些体会和理解。 首先,PHP...

    php微信开发心得

    相信很多人都需要这样一份有关微信开发的资料,从基本功能到通用,curl都有说道。可以互相交流

    php学习笔记_心得

    【PHP学习笔记_心得】 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适合于Web开发。在本文中,我们将深入探讨几个PHP的核心概念,包括如何在文件间进行调用、页面跳转的方法以及异常处理机制...

    php学习心得范文.doc

    【PHP学习心得】 PHP,全称“Hypertext Preprocessor”,是一种广泛应用于Web开发的开源脚本语言。尽管它并非当前最热门的编程语言,但其应用广泛且就业前景良好,吸引了众多学习者。要成为一名优秀的PHP程序员,...

    PHP53安装分析心得.doc

    《PHP53安装分析心得》 在PHP的世界中,每个版本的更新都伴随着技术的演进和改进。本文主要分享了作者在安装PHP 5.3.0过程中的体验和心得,旨在帮助开发者更好地理解和应对安装过程中可能遇到的问题。 首先,PHP ...

    php心得体验自我学习结果总结

    PHP 心得体验自我学习结果总结 本文总结了 PHP 初学者常见的几个问题和解决方案,涵盖了变量传递、Session 使用、错误信息显示、邮件发送、MySQL 使用、header Already Sent 错误、php.ini 配置、ISAPI 安装、SQL ...

    高职院校PHP课程教学心得.pdf

    "高职院校PHP课程教学心得" 本文总结了高职院校PHP课程教学的经验,分析了学生学习PHP课程中遇到的问题,并提出了解决方案。PHP语言是高职计算机相关专业的重要课程,但学生学习PHP课程中存在一些问题,如难以把握...

    php实训心得体会.docx

    PHP 实训心得体会 PHP 是一種開放源碼的腳本语言,广泛應用於網頁開發,它支持多种数据库,包括 MySQL、PostgreSQL、Oracle 等。下面是 PHP 实训心得体会的知识点总结: 一、PHP 基本语法 * 运算类型:PHP 中的...

    给php新手谈谈我的学习心得

    接着后天就要回福州了,由于家里还没装网络,因此,得有一段时间不能来论坛了,在这之前,我想了下,我给新手解答过问题,演示过代码,好像没谈过自己的学习心得,临走之前,我就来谈谈我学习PHP的心得,虽然是老生...

Global site tag (gtag.js) - Google Analytics