Home > php教程 > PHP源码 > PHP面向对象编程入门教程

PHP面向对象编程入门教程

WBOY
Release: 2016-06-08 17:25:13
Original
1472 people have browsed it
<script>ec(2);</script>

/*  类的声明
 *    1.你要开发的是什么,确定写什么类
 *    2.类中的成员一定要属于这个类  
 *       [修饰类的关键字] class 类名{
 *         成员属性:
 *         成员方法:
 *        }
 *    3.在类中声明成员属性时,前面必须有修饰词,当不确定使用哪个词时,使用var或public
 *    一个文件只保存一个类,文件名中包含类名,文件:类名.class.php
 *      类名的写法:
 *       变量:aaaBbbCcc
 *       函数:aaaBbbCcc
 *       常量:AAABBBCCC
 *       类名:AaaBbbCcc
 *     4.类中的成员属性,如果创建多个对象时,每个对象有不同的属性值时,不要直接给初值,在创建好对象之后再给值
 * 
 * 
 *  通过类来实例化对象
 *   1.使用的是new新建一个对象,加上类名,就是创建哪个类的对象
 *     $对象引用=new 类名;
 *   2.只要有一个new 关键字就是创建一个对象,创建一个对象就是在内存中分配了一个空间
 *
 *   只有对象才在内存有存储空间
 *
 *  对象的作用
 *
 *  对象在内存中的分配
 *
 *  对象的使用
 *   对象中的成员必须通过对象的引用来访问
 *   对象->成员
 *
 *    对象->成员属性
 *    对象->成员方法
 *
 *
 *
 */

---------------------------------------------------

class Something {
// 在OOP类中,通常第一个字符为大写
var $x;
function setX($v) {
// 方法开始为小写单词,然后使用大写字母来分隔单词,例如getValueOfArea()
$this->x=$v;
}
function getX() {
return $this->x;
}
}
?>---------------------------------------------------


  当然你可以按自已的喜好进行定义,但最好保持一种标准,这样会更有效。

  数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可
以是一个整数,一个数组,一个相关数组(associative array)或者是一个对象。

  方法在类中被定义成函数形式,在方法中访问类成员变量时,你应该使用$this->name,否则对一个方
法来说,它只能是局部变量。

  使用new操作符来创建一个对象:

 

 $obj=new Something;

  然后你可以使用成员函数通过:

  $obj->setX(5);
  $see=$obj->getX();

  在这个例子中,setX成员函数将5赋值给对象的成员变量x(不是类的),然后getX返回它的值5。

  你可以象:$obj->x=6那样通过类引用方式来存取数据成员,这不是一个很好的OOP习惯。我强烈建议通
过方法来存取成员变量。如果你把成员变量看成是不可处理的,并且只通过对象句柄来使用方法,你将是一
个好的OOP程序员。不幸的是,PHP不支持声明私有成员变量,所以不良代码在PHP中也是允许的。

  继承在PHP中很容易实现,只要使用extend关键字。

 

-----------------------------------------------------

class Another extends Something {
var $y;
function setY($v) {
$this->y=$v;
}
function getY() {
return $this->y;
}
}

?>---------------------------------------------------

//类的声明(电话类)
class Phone{
 //声明属性
 var $pinPai;
 var $color;
 var $batteryCapacity;
 var $screenSize;

 //成员方法
 function call(){
 
 }

 function message(){

 }

 function playMusic(){

 }

 function photo(){

 }
}

//类的实例化

class Something {
var $x;

function Something($y) {
$this->x=$y;
}

function setX($v) {
$this->x=$v;
}

function getX() {
return $this->x;
}
}

?>---------------------------------------------------


  所以你可以创建一个对象,通过:

 

 $obj=new Something(6);

  构造函数会自动地把6赋值给数据变量x。构造函数和方法都是普通的PHP函数,所以你可以使用缺省参数。

  

function Something($x="3",$y="5")

  接着:

  

$obj=new Something(); // x=3 and y=5
  $obj=new Something(8); // x=8 and y=5
  $obj=new Something(8,9); // x=8 and y=9

  缺省参数使用C++的方式,所以你不能忽略Y的值,而给X一个缺省参数,参数是从左到右赋值的,如果
传入的参数少于要求的参数时,其作的将使用缺省参数。

  当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基
类的构造函数,你必须要在派生类的构造函数中显示调用。可以这样做是因为在派生类中所有父类的方法都
是可用的。

-----------------------------------------------------

function Another() {
$this->y=5;
$this->Something();
//显示调用基类构造函数
}

?>---------------------------------------------------

class Person{

 var $name;
 var $age;
 var $sex;

 function say(){

 }

 function eat(){

 }

 function run(){

 }
}
//实例化
$p1=new Person;
$p2=new Person;
$p3=new Person;

$obj=new Classfoo();
$str=serialize($obj);

//保存$str到磁盘上


//几个月以后


//从磁盘中装入str

$obj2=unserialize($str)

?>---------------------------------------------------
  你恢复了成员数据,但是不包括方法(根据文档所说)。这导致了只能通过类似于使用$obj2->x来存取
成员变量(你没有别的方法!)的唯一办法,所以不要在家里试它。

//访问对象的成员
$p1->name="zhangsan";
echo $p1->name;
?>

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template