PHP/Class/this — различия между версиями
Admin (обсуждение | вклад) м (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";
?>