PHP类
PHP教程 - PHP类
面向对象设计的概念
字 | 描述 |
---|---|
Object-Oriented | 使用面向对象编程,我们可以通过使用类来对一般概念建模。 |
Class | 类是描述某事的特征和行为的代码单元。 |
Object | 对象是类的特定实例。 |
Properties | 类或对象的特性称为其属性。 |
Method | 类的行为(动作)被称为其方法。 |
PHP类定义
在PHP中,我们使用class关键字来定义一个类。
类定义具有以下语法。
class Car { //properties //methods }
这里是定义一个非常基本的Dog类所需的PHP代码:
<?PHP class Dog { public function bark() { print "PHP!"; } } ?>
这里Dog类只有一个方法,bark()。
PHP从类创建对象
类定义或创建一个新类型。 我们可以创建变量为新类型。 我们称之为面向对象编程中的对象。
我们可以使用以下语法创建一个对象:
$aRectangleObject = new RectangleClass;
我们需要使用special - > 操作符引用方法。
<?PHP class Shape { public function say() { print "shape"; } } $aRectangle = new Shape; $aRectangle->say(); ?>
上面的代码生成以下结果。
对象内的对象
您可以在其他对象内使用对象。使用 - >
访问对象中的对象。例如,我们可以定义一个 NameTag
类并给出每个 Book
一个 NameTag
对象like这个:
<?PHP 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;
写入存储对象的变量的名称,后跟一个由。组成的箭头符号连字符( - )和大于符号(>),后跟属性名称。
注意,属性名称在其前面没有$符号。
例子
我们可以向类添加属性。
<?PHP class Shape{ public $Name; public function say() { print "shape"; } } $aRectangle = new Shape; $aRectangle->say(); $aRectangle->Name = "Rect"; $aRectangle->say(); ?>
上面的代码生成以下结果。
- >
用于与属性一起使用,还有没有美元符号之前的名称。
每个对象都有自己的一组属性。 考虑下面的代码:
<?PHP 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将迭代每个可访问的属性。
也就是说,私有和受保护的属性不会可访问的一般范围。
看看这个脚本:
<?PHP 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
循环在方法内调用,我们应该能够看到属性:
<?PHP 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(); ?>
上面的代码生成以下结果。
更多建议: