Maison php教程 php手册 PHP 5.0对象模型深度探索之属性和方法

PHP 5.0对象模型深度探索之属性和方法

Jun 21, 2016 am 09:11 AM
name public

对象

    一个对象实例的属性是变量,就像PHP的其他变量一样。但是你必须使用->运算符来引用它们。不需要在属性前使用美元符$。

  可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 下面的例子中,对象House中的属性room包含了一组Room对象。

  访问方法和访问属性类似。->运算符用来指向实例的方法. 在下面的中调用getLastLogin就是。方法执行起来和类外的函数几乎相同.

  如果一个类从另一类中继承而来,父类中的属性和方法将在子类中都有效,即使在子类中没有声明. 像以前提到过的,继承是非常强大的. 如果你想访问一个继承的属性,你只需要像访问基类自己的属性那样引用即可,使用::运算符.

class Room
{
 public $name;

 function __construct($name="unnamed")
 {
  $this->name = $name;
 }
}

class House
{
 //array of rooms
 public $room;
}

//create empty house
$home = new house;

//add some rooms
$home->room[] = new Room("bedroom");
$home->room[] = new Room("kitchen");
$home->room[] = new Room("bathroom");

//show the first room of the house
print($home->room[0]->name);
?>
  PHP有两个特殊的命名空间:parent命名空间指向父类,self命名空间指向当前的类。下面的例子中显示了如何用parent命名空间来调用父类中的构造函数. 同时也用self来在构造函数中调用另一个类方法。

class Animal //动物
{
 public $blood; //热血or冷血属性
 public $name;
 public function __construct($blood, $name=NULL)
 {
  $this->blood = $blood;
  if($name)
  {
   $this->name = $name;
  }
 }
}

class Mammal extends Animal //哺乳动物
{
 public $furColor; //皮毛颜色
 public $legs;

 function __construct($furColor, $legs, $name=NULL)
 {
  parent::__construct("warm", $name);
  $this->furColor = $furColor;
  $this->legs = $legs;
 }
}

class Dog extends Mammal
{
 function __construct($furColor, $name)
 {
  parent::__construct($furColor, 4, $name);

  self::bark();
 }

 function bark()
 {
  print("$this->name says 'woof!'");
 }
}

$d = new Dog("Black and Tan", "Angus");
?>
  对于对象的成员来是这样调用的:如果你需要在运行时确定变量的名称,你可以用$this->$Property这样的表达式。 如果你想调用方法,可以用$obj->$method()。

  你也可以用->运算符来返回一个函数的值,这在PHP以前的版本中是不允许的。例如,你可以写一个像这样的表达式: $obj->getObject()->callMethod()。这样避免了使用一个中间变量,也有助于实现某些设计模式,如Factory模式。



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre la version développeur et la version publique d'iOS ? Quelle est la différence entre la version développeur et la version publique d'iOS ? Mar 01, 2024 pm 12:55 PM

Chaque année, avant qu'Apple ne publie une nouvelle version majeure d'iOS et de macOS, les utilisateurs peuvent télécharger la version bêta plusieurs mois à l'avance pour en faire l'expérience en premier. Étant donné que le logiciel est utilisé à la fois par le public et par les développeurs, Apple a lancé des versions développeur et publique, qui sont des versions bêta publiques des versions bêta développeur, pour les deux. Quelle est la différence entre la version développeur et la version publique d’iOS ? Littéralement parlant, la version développeur est une version bêta développeur et la version publique est une version bêta publique. La version développeur et la version publique ciblent des publics différents. La version développeur est utilisée par Apple pour les tests par les développeurs. Vous avez besoin d'un compte développeur Apple pour la télécharger et la mettre à niveau.

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Guide d'utilisation publique du modificateur d'autorisation d'accès aux fonctions Java Guide d'utilisation publique du modificateur d'autorisation d'accès aux fonctions Java Apr 26, 2024 am 08:39 AM

Le modificateur d'accès public Java permet d'accéder aux fonctions de n'importe où et est utilisé pour déclarer des API publiques et définir des outils et des utilitaires partagés entre les packages ou les classes. L'utilisation spécifique est la suivante : Syntaxe : type de valeur de retour public nom de la fonction (liste de paramètres) {...} Scénario : fonctions accessibles de n'importe où, méthodes dans les API publiques, outils ou utilitaires partagés.

Que dois-je faire si php ne parvient pas à obtenir le nom ? Que dois-je faire si php ne parvient pas à obtenir le nom ? Nov 24, 2022 am 09:56 AM

PHP ne peut pas obtenir le nom car lorsque les valeurs de nom et d'identifiant de l'élément de formulaire sont différentes, le navigateur ne peut pas le reconnaître. La solution : 1. Vérifiez si certains éléments de formulaire et éléments de cadre utilisent le nom ; se voir attribuer un identifiant mais pas un nom ; 3. Pour la case à cocher à sélection multiple, vous pouvez utiliser "join(',', $__POST['name'])" pour former des données.

Les programmes Java affichent différents niveaux d'accès Les programmes Java affichent différents niveaux d'accès Aug 19, 2023 pm 10:09 PM

Les modificateurs d'accès sont utilisés pour définir la fonctionnalité de visibilité de certaines classes, interfaces, variables, méthodes, constructeurs, membres de données et méthodes de définition particulières dans le langage de programmation Java, nous avons différents types de modificateurs d'accès. Par défaut - Si nous déclarons une fonction, elle ne sera visible que dans un package spécifique. Privé- Si nous déclarons une fonction, elle ne sera disponible que dans une classe spécifique

Comment ajouter un nom à la configuration dans Vue3 Comment ajouter un nom à la configuration dans Vue3 May 13, 2023 am 09:40 AM

A quoi sert le nom dans Vue3 ? 1. Le nom doit être défini lors de la création de composants récursifs. 2. Le composant peut être mis en cache avec keep-aliveincludeexclude. 3. Lorsque Vue signale une erreur ou est en cours de débogage, vous pouvez voir le nom du composant défini par Vue3. automatiquement généré tant que le composant de fichier unique du mode sucre de syntaxe de configuration est activé dans le script. L'option de nom correspondante sera automatiquement générée en fonction du nom du fichier, par exemple, Tree.vue, puis son nom sera automatiquement généré par Tree. . Cela présente un inconvénient. Si vous souhaitez modifier le nom, vous devez modifier le nom du composant. S'il existe un endroit pour importer le composant, vous devez le modifier ensemble. 2. Ouvrez un script pour définir le nom

Comment utiliser le modificateur public en Java Comment utiliser le modificateur public en Java Apr 18, 2023 pm 06:04 PM

1. Toute autre classe peut accéder aux classes, méthodes, constructeurs et interfaces déclarés publics. 2. Si les classes publiques qui accèdent les unes aux autres sont distribuées dans des packages différents, vous devez importer le package dans lequel se trouve la classe publique correspondante. En raison de l'héritage de classe, toutes les méthodes et variables publiques peuvent être héritées par ses sous-classes. Exemple publicclassdemo1{publicstaticvoidmain(String[]args){Personp1=newPerson();p1.fn();System.out.println(p1.a);//100System.out.println(p1.scorce);/

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

See all articles