PHP新手之学习类与对象(1)

本文介绍的是PHP程序设计语言中类和对象的基本知识,适合初学者阅读,希望对你有帮助,一起来看。

PHP 5 引入了新的对象模型(Object Model)。完全重写了 PHP 处理对象的方式,允许更佳性能和更多特性。

一、基本概念

1、class

每个类的定义都以关键字 class 开头,后面跟着类名,可以是任何非 PHP 保留字的名字。后面跟着一对花括号,里面包含有类成员和方法的定义。伪变量 $this 可以在当一个方法在对象内部调用时使用。$this 是一个到调用对象(通常是方法所属于的对象,但也可以是另一个对象,如果该方法是从第二个对象内静态调用的话)的引用。看下面例子:

Example#1 面向对象语言中的 $this 变量

<?php
class A {
    function foo() {
        if (isset($this)) {
            echo ‘$this is defined (‘;
            echo get_class($this);
            echo ")\n";
        } else {
            echo "\$this is not defined.\n";
        }
    }
}
class B {
    function bar() {
        A :: foo();
    }
}
$a = new A();
$a -> foo();
A :: foo();
$b = new B();
$b -> bar();
B :: bar();

?>

上例将输出:

  1. $this is defined (a)
  2. $this is not defined.
  3. $this is defined (b)
  4. $this is not defined.

Example#2 简单的类定义

<?php
class SimpleClass {
    // 成员声明
    public $var = ‘a default value‘;
    // 方法声明
    public function displayVar() {
        echo $this -> var;
    }
} 

?>

Example#3 类成员的默认值

<?php
class SimpleClass {
    // 无效的类成员定义:
    public $var1 = ‘hello ‘ . ‘world‘;
    public $var2 = <<<EOD
hello world
EOD;
    public $var3 = 1 + 2;
    public $var4 = self :: myStaticMethod();
    public $var5 = $myVar;
    // 正确的类成员定义:
    public $var6 = myConstant;
    public $var7 = self :: classConstant;
    public $var8 = array(true, false);
} 

?>

2、new

要创建一个对象的实例,必须创建一个新对象并将其赋给一个变量。当创建新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常。

Example#4 创建一个实例

<?php
$instance = new SimpleClass();
?> 

复制代码当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已创建的对象建立一个新实例。

Example#5 对象赋值

<?php
$assigned = $instance;
$reference = &$instance;
$instance -> var = ‘$assigned will have this value‘;
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);

?>

复制代码上例将输出:

  1. NULL
  2. NULL
  3. object(SimpleClass)#1 (1) {
  4. ["var"]=>
  5. string(30) "$assigned will have this value"
  6. }

3、extends

一个类可以在声明中用 extends 关键字继承另一个类的方法和成员。不能扩展多个类,只能继承一个基类。

被继承的方法和成员可以通过用同样的名字重新声明被覆盖,除非父类定义方法时使用了 final 关键字。可以通过 parent:: 来访问被覆盖的方法或成员。

Example#6 简单的类继承

<?php
class ExtendClass extends SimpleClass {
    // Redefine the parent method
    function displayVar() {
        echo "Extending class\n";
        parent :: displayVar();
    }
}
$extended = new ExtendClass();
$extended -> displayVar();

?>

上例将输出:

  1. Extending class
  2. a default value
时间: 2024-11-09 01:10:49

PHP新手之学习类与对象(1)的相关文章

PHP新手之学习类与对象(2)

二.自动加载对象 很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件列表. 在 PHP 5 中,不再需要这样了.可以定义一个 __autoload 函数,它会在试图使用尚未被定义的类时自动调用.通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类. Note: 在 __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误.如果使用 PHP 的 CLI 交

PHP新手之学习类与对象(3)

四.访问控制 对属性或方法的访问控制,是通过在前面添加关键字 public.protected 或 private 来实现的.由 public 所定义的类成员可以在任何地方被访问:由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问):而由 private 定义的类成员则只能被其所在类访问. 1.对类成员的访问控制 类成员都必须使用关键字public.protected 或 private 进行定义 Example#1 声明类成员 <?php /

PHP新手之学习类与对象(4)

五.范围解析操作符(::) 范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员.方法和常量,还可以用于覆盖类中的成员和方法. 当在类的外部访问这些静态成员.方法和常量时,必须使用类的名字. 把 Paamayim Nekudotayim 选作该操作符的名字似乎有些奇怪.然而,这是 Zend 开发小组在写 Zend Engine 0.5 (被用于 PHP 3 中)时所作出的决定.事实上这个词在希伯莱文就是双冒号的意思. Example#

Java新手学习笔记---字符串对象的相等

public class testobj_important { public static void main(String[] args) { String a = new String("abc"); String b = new String("abc"); System.out.println(a==b); String c = "def"; String d = "def"; System.out.println(

Java新手学习笔记---实例对象默认指针

public class testclass { public static void main(String[] args){ Student stu1 = new Student(); Comp c1 = new Comp(); c1.band="梁河县"; stu1.comp = c1; c1.band="1111"; System.out.println(stu1.comp.band); } } class Comp { String band; } cla

201671010122 2016-2017-2 《JAVA程序设计》第四周JAVA学习反思

第四周JAVA学习反思 第四周的JAVA学习还是围绕着对象与类进行,不过我觉得和第三周的JAVA学习一样,对对象与类的学习还是不够深入,很多问题还是在遗留着.前三章的学习都是一些基础,而且在C语言中我们大都也学过,所以觉得不是很吃力.但是自从第三周开始学习类与对象,我就觉得很吃力,根本就跟不上脚步,因为都是一些新的知识点,在我看来挺抽象的,很多知识点都还是糊里糊涂,用这些糊里糊涂的知识点去编写程序,简直就是天方夜谭,所以程序错误百出,更严重的是有些程序我根本就无从下手,我觉得这不是我们大家想要的

学习面向对象的第一天,感觉还好啦

今天是在云和学院学习面向对象的第一天,发现程序的写法可以有好多种,但是简单的还是要自己学习,其实都很想用简单的方法,但是还是需要面向对象这个理解的更加明白,或许我真的在这方面只是知道这个名词但是还真的不知道这个怎么整,今天就初步的写下我学习的面向对象的一些基本的知识. <1>首先讲述了类与对象的区别以及类的定义与对象的定义,虽然学习类与对象很抽象,但是我认为首先是自己能够理解类与对象的定义,从定义上在去区别类与定义,这样可能会简单些吧. 类的定义:把具有相同性质和功能的事物所构成的集合就叫做类

javascript小技巧-js小技巧收集(转)

本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得

JavaScript技巧手册

js小技巧 每一项都是js中的小技巧,但十分的实用! 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号&q