PHP教程 - PHP类
面向对象设计的概念
字
描述
Object-Oriented
使用面向对象编程,我们可以通过使用类来对一般概念建模。
Class
类是描述某事的特征和行为的代码单元。
Object
对象是类的特定实例。
Properties
类或对象的特性称为其属性。
Method
类的行为(动作)被称为其方法。
PHP类定义
在PHP中,我们使用class关键字来定义一个类。
类定义具有以下语法。
class Car {
//properties
//methods
}
这里是定义一个非常基本的Dog类所需的PHP代码:
class Dog {
public function bark() {
print "PHP!";
}
}
?>
这里Dog类只有一个方法,bark()。
PHP从类创建对象
类定义或创建一个新类型。 我们可以创建变量为新类型。 我们称之为面向对象编程中的对象。
我们可以使用以下语法创建一个对象:
$aRectangleObject = new RectangleClass;
我们需要使用special - > 操作符引用方法。
class Shape {
public function say() {
print "shape";
}
}
$aRectangle = new Shape;
$aRectangle->say();
?>
上面的代码生成以下结果。
对象内的对象
您可以在其他对象内使用对象。使用- >访问对象中的对象。例如,我们可以定义一个NameTag类并给出每个Book一个NameTag对象like这个:
class NameTag {
public $Words;
}
class Book {
public $Name;
public $NameTag;
public function say() {
print "Book";
}
}
$aBook = new Book;
$aBook->Name = "PHP";
$aBook->NameTag = new NameTag;
$aBook->NameTag->Words = "from www.w3cschool.cn";
?>
$ NameTag属性声明为像任何其他,但需要用新创建一次& aBook已创建。
PHP类属性
类属性与变量非常相似。
对象的属性可以存储单个值,值数组,甚至另一个对象。
要向类添加属性,请首先编写关键字public,private或protected,后面是属性的名称前面加一个$符号。
public,private或protected是可见性级别你想给物业:
class MyClass {
public $property1; // This is a public property
private $property2; // This is a private property
protected $property3; // This is a protected property
}
We can initialize properties at the time that we declare them:
class MyClass {
public $value = 123;
}
访问属性
我们可以访问相应对象的属性值在您的调用代码中使用以下语法:
$object->property;
写入存储对象的变量的名称,后跟一个由。组成的箭头符号连字符( - )和大于符号(>),后跟属性名称。
注意,属性名称在其前面没有$符号。
例子
我们可以向类添加属性。
class Shape{
public $Name;
public function say() {
print "shape";
}
}
$aRectangle = new Shape;
$aRectangle->say();
$aRectangle->Name = "Rect";
$aRectangle->say();
?>
上面的代码生成以下结果。
- >用于与属性一起使用,还有没有美元符号之前的名称。
每个对象都有自己的一组属性。 考虑下面的代码:
class Shape{
public $Name;
public function say() {
print "shape";
}
}
class Rectangle extends Shape{
}
$aRect = new Rectangle;
$bRect = new Rectangle;
$aRect->Name = "A";
$bRect->Name = "B";
print $aRect->Name;
print $bRect->Name;
?>
每个对象都有自己的一组属性。 考虑下面的代码:...
PHP迭代对象属性
我们可以把一个对象作为一个数组与foreach循环。foreach将迭代每个可访问的属性。
也就是说,私有和受保护的属性不会可访问的一般范围。
看看这个脚本:
class Person {
public $FirstName = "James";
public $MiddleName = "Tuple";
public $LastName = "List";
private $Password = "pass";
public $Age = 29;
public $HomeTown = "LA";
}
$bill = new Person();
foreach($bill as $var => $value) {
echo "$var is $value\n";
}
?>
上面的代码生成以下结果。
请注意,$ Password属性无处可见,因为它被标记为私有。
如果foreach循环在方法内调用,我们应该能够看到属性:
class Person {
public $FirstName = "James";
public $MiddleName = "Tuple";
public $LastName = "List";
private $Password = "pass";
public $Age = 29;
public $HomeTown = "LA";
public function outputVars() {
foreach($this as $var => $value) {
echo "$var is $value\n";
}
}
}
$bill = new Person();
$bill->outputVars();
?>
上面的代码生成以下结果。