<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=PHP%2FClass%2FAbstract_Class</id>
		<title>PHP/Class/Abstract Class - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=PHP%2FClass%2FAbstract_Class"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=PHP/Class/Abstract_Class&amp;action=history"/>
		<updated>2026-04-04T16:15:44Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=PHP/Class/Abstract_Class&amp;diff=44&amp;oldid=prev</id>
		<title> в 10:37, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=PHP/Class/Abstract_Class&amp;diff=44&amp;oldid=prev"/>
				<updated>2010-05-26T10:37:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 10:37, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=PHP/Class/Abstract_Class&amp;diff=45&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=PHP/Class/Abstract_Class&amp;diff=45&amp;oldid=prev"/>
				<updated>2010-05-26T07:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==abstract class demo==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Employee {&lt;br /&gt;
    private $title;&lt;br /&gt;
    private $lastName;&lt;br /&gt;
    private $firstName;&lt;br /&gt;
    protected $salary;&lt;br /&gt;
    private $ratio = 0; &lt;br /&gt;
    &lt;br /&gt;
    public function __construct($title, $firstName, $mainName, $salary ) { &lt;br /&gt;
        $this-&amp;gt;title     = $title;&lt;br /&gt;
        $this-&amp;gt;firstName = $firstName;&lt;br /&gt;
        $this-&amp;gt;lastName  = $mainName;&lt;br /&gt;
        $this-&amp;gt;salary     = $salary;&lt;br /&gt;
    }&lt;br /&gt;
    public function firstName() {&lt;br /&gt;
        return $this-&amp;gt;firstName;&lt;br /&gt;
    }&lt;br /&gt;
    public function getlastName() {&lt;br /&gt;
        return $this-&amp;gt;lastName;&lt;br /&gt;
    }&lt;br /&gt;
    public function setRatio( $num ) {&lt;br /&gt;
        $this-&amp;gt;ratio=$num;&lt;br /&gt;
    }&lt;br /&gt;
    public function getRatio() {&lt;br /&gt;
        return $this-&amp;gt;ratio;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public function getTitle() {&lt;br /&gt;
        return $this-&amp;gt;title;&lt;br /&gt;
    }&lt;br /&gt;
    public function getSalary() {&lt;br /&gt;
        return ($this-&amp;gt;salary - $this-&amp;gt;ratio);&lt;br /&gt;
    }&lt;br /&gt;
    public function getFullName() {&lt;br /&gt;
        return &amp;quot;{$this-&amp;gt;firstName}&amp;quot; . &amp;quot; {$this-&amp;gt;lastName}&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    function getSummaryLine() {&lt;br /&gt;
        $base  = &amp;quot;$this-&amp;gt;title ( $this-&amp;gt;lastName, &amp;quot;;&lt;br /&gt;
        $base .= &amp;quot;$this-&amp;gt;firstName )&amp;quot;; &lt;br /&gt;
        return $base;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
abstract class EmployeeWriter {&lt;br /&gt;
    abstract static function write( Employee $shopProduct );&lt;br /&gt;
}&lt;br /&gt;
class TextEmployeeWriter extends EmployeeWriter {&lt;br /&gt;
    static function write( Employee $shopEmployee ) {&lt;br /&gt;
        $str  = &amp;quot;{$shopEmployee-&amp;gt;getTitle()}: &amp;quot;;   &lt;br /&gt;
        $str .= $shopEmployee-&amp;gt;getFullName();&lt;br /&gt;
        $str .= &amp;quot; ({$shopEmployee-&amp;gt;getSalary()})\n&amp;quot;;&lt;br /&gt;
        print $str;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
$developer1 = new Employee(&amp;quot;A&amp;quot;, &amp;quot;A1&amp;quot;, &amp;quot;A2&amp;quot;, 5.99 );&lt;br /&gt;
TextEmployeeWriter::write( $developer1 );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==abstract keyword is used to say that a method or class cannot be created in your program as it stands==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;?&lt;br /&gt;
    abstract class Dog {&lt;br /&gt;
            abstract function bark( ) {&lt;br /&gt;
                    print &amp;quot;Woof!&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define abstract class==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
   abstract class Staff&lt;br /&gt;
   {&lt;br /&gt;
      abstract function hire();&lt;br /&gt;
      abstract function fire();&lt;br /&gt;
      abstract function promote();&lt;br /&gt;
      abstract function demote();&lt;br /&gt;
   }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using Abstract Classes and Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Any class that contains one or more abstract methods must itself be declared as abstract. &lt;br /&gt;
An abstract class cannot be instantiated&lt;br /&gt;
A class that extends the abstract class must implement the abstract methods of the parent class or itself be declared as abstract. &lt;br /&gt;
&amp;lt;?&lt;br /&gt;
abstract class Animal{ &lt;br /&gt;
    function __construct($name=&amp;quot;No-name&amp;quot;, $breed=&amp;quot;unknown&amp;quot;, $price = 15) { &lt;br /&gt;
        $this-&amp;gt;name = $name; &lt;br /&gt;
        $this-&amp;gt;breed = $breed; &lt;br /&gt;
        $this-&amp;gt;price = $price; &lt;br /&gt;
    } &lt;br /&gt;
    function setName($name) { &lt;br /&gt;
        $this-&amp;gt;name = $name; &lt;br /&gt;
    } &lt;br /&gt;
    function setBreed($breed){ &lt;br /&gt;
        $this-&amp;gt;breed = $breed; &lt;br /&gt;
    } &lt;br /&gt;
    function setPrice($price) { &lt;br /&gt;
        $this-&amp;gt;price = $price &amp;lt; 0 ? 0 : $price; &lt;br /&gt;
    } &lt;br /&gt;
    function getName() { &lt;br /&gt;
        return $this-&amp;gt;name; &lt;br /&gt;
    } &lt;br /&gt;
    function display() { &lt;br /&gt;
        printf(&amp;quot;&amp;lt;p&amp;gt;%s is a %s and costs \$%.2f.&amp;lt;/p&amp;gt;\n&amp;quot;, $this-&amp;gt;name, $this-&amp;gt;breed, $this-&amp;gt;price); &lt;br /&gt;
    } &lt;br /&gt;
    public static $type = &amp;quot;animal&amp;quot;; &lt;br /&gt;
    &lt;br /&gt;
    public static function fly($direction = &amp;quot;around&amp;quot;) { &lt;br /&gt;
        printf(&amp;quot;&amp;lt;p&amp;gt;Flying %s.&amp;lt;/p&amp;gt;\n&amp;quot;, $direction); &lt;br /&gt;
    } &lt;br /&gt;
    abstract public function birdCall(); &lt;br /&gt;
    &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
class Parrot extends Animal { &lt;br /&gt;
    public function birdCall($singing=FALSE) { &lt;br /&gt;
        $sound = $singing ? &amp;quot;twitter&amp;quot; : &amp;quot;chirp&amp;quot;; &lt;br /&gt;
        printf(&amp;quot;&amp;lt;p&amp;gt;%s says: *%s*&amp;lt;/p&amp;gt;\n&amp;quot;, $this-&amp;gt;getName(), $sound); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using Abstract Classes in PHP 5==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     abstract class Number {&lt;br /&gt;
          private $value;&lt;br /&gt;
          abstract public function value();&lt;br /&gt;
          public function reset() {&lt;br /&gt;
               $this-&amp;gt;value = NULL;&lt;br /&gt;
          }&lt;br /&gt;
     }&lt;br /&gt;
     class Integer extends Number {&lt;br /&gt;
          private $value;&lt;br /&gt;
          public function value() {&lt;br /&gt;
               return (int)$this-&amp;gt;value;&lt;br /&gt;
          }&lt;br /&gt;
     }&lt;br /&gt;
     $num = new Integer; /* Okay */&lt;br /&gt;
     $num2 = new Number; /* This will fail */&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>