PHP/Class/this — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
м (1 версия)
 
м (1 версия)
 
(нет различий)

Текущая версия на 07:00, 26 мая 2010

Accessing the $age variable using this->

 
<?php
class Cat {
    var $age;
    function Cat($new_age){
        $this->age = $new_age;
    }
    function Birthday(  ){
        $this->age++;
    }
}
$fluffy = new Cat(1);
echo "Age is $fluffy->age <br />";
echo "Birthday<br/>";
$fluffy->Birthday(  );
echo "Age is $fluffy->age <br />";
?>



$this keyword refers to the instance from within the class definition

 
<?php
  class Bird
  {
    function __construct($name, $breed)
    {
      $this->name = $name;
      $this->breed = $breed;
    }
  }
  $tweety = new Bird("Tweety", "canary");
  printf("<p>%s is a %s.</p>\n", $tweety->name, $tweety->breed);
?>



Use this keyword

<?php
   class Staff
   {
      var $name;
      var $city;
      protected $wage;
      function __get($propName)
      {
         echo "__get called!<br />";
         $vars = array("name","city");
         if (in_array($propName, $vars))
         {
            return $this->$propName;
         } else {
            return "No such variable!";
         }
      }
   }
   $employee = new Staff();
   $employee->name = "Joe";
   echo $employee->name."<br/>";
   echo $employee->age;
?>



Use this keyword to reference interal properties

<?php
class Employee {
    public $numPages;
    public $stayYear;
    public $title;
    public $lastName;
    public $firstName;
    public $price;
    
    function __construct(   $title, $firstName, 
                            $mainName, $price, 
                            $numPages=0, $stayYear=0 ) { 
        $this->title             = $title;
        $this->firstName = $firstName;
        $this->lastName  = $mainName;
        $this->price     = $price;
        $this->numPages  = $numPages;
        $this->stayYear = $stayYear;
    }
    
    function getNumberOfPages() {
        return $this->numPages;
    }
    function getStayLength() {
        return $this->stayYear;
    }
    function getFullName() {
        return "{$this->firstName}" .  "{$this->lastName}";
    }
}
$product1 = new Employee("A", "A1", "A2", 5.99, 300 );
$product2 = new Employee("B", "B1", "B2", 10.99, null, 60.33 );
print "author:          ".$product1->getFullName()."\n";
print "number of pages: ".$product1->getNumberOfPages()."\n";
print "artist:          ".$product2->getFullName()."\n";
print "play length:     ".$product2->getStayLength()."\n";
?>