Latest web development tutorials
×

PHP مسار

PHP مسار PHP مقدمة موجزة PHP تثبيت PHP قواعد PHP متغير PHP echo/print PHP أنواع البيانات PHP ثابت PHP سلسلة PHP مشغلي PHP If...Else PHP Switch PHP مجموعة PHP فرز مجموعة PHP Superglobals PHP While تداول PHP For تداول PHP وظيفة PHP المتغيرات السحرية PHP مساحات PHP الشيئية

PHP شكل

PHP شكل PHP مصادقة النماذج PHP شكل - الحقول المطلوبة PHP شكل - البريد الإلكتروني التحقق وURL PHP المثال شكل كامل PHP $_GET متغير PHP $_POST متغير

PHP دروس متقدمة

PHP المصفوفات متعددة الأبعاد PHP تاريخ PHP احتواء PHP ملف PHP تحميل ملف PHP Cookie PHP Session PHP E-mail PHP أمن E-mail PHP Error PHP Exception PHP فلتر PHP فلتر متقدم PHP JSON

PHP 7 الميزات الجديدة

PHP 7 الميزات الجديدة

PHP قاعدة بيانات

PHP MySQL مقدمة موجزة PHP MySQL صلة PHP MySQL إنشاء قاعدة بيانات PHP MySQL إنشاء جدول بيانات PHP MySQL إدراج بيانات PHP MySQL إدراج بيانات متعددة PHP MySQL القوائم المعدة PHP MySQL قراءة البيانات PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX مقدمة موجزة AJAX PHP AJAX قاعدة بيانات AJAX XML AJAX البحث في الوقت الحقيقي AJAX RSS Reader AJAX تصويت

PHP الدليل المرجعي

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP معالجة الصور PHP RESTful

PHP الشيئية

في البرمجة كائنية التوجه (بالإنكليزية: البرمجة وجوه المنحى، اختصار: OOP)، والهدف من ذلك هو وصف لمعالجة المعلومات والمعلومات التي تتكون من كل واحد، هو تجريد العالم الحقيقي.

الأمور الكائنات في العالم الحقيقي الذي نواجهه، مثل أجهزة الكمبيوتر، وأجهزة التلفزيون، والدراجات.

ثلاث خصائص رئيسية من وجوه:

  • سلوك الكائن: كائن التي يمكن تطبيقها على العملية، تشغيل الأضواء، وإطفاء الأنوار هو السلوك.
  • كائن النموذج: عند تطبيق هذه الأساليب هو كيفية الرد على الكائن، اللون والحجم والشكل.
  • تمثيل من وجوه: كائن تمثل ما يعادل الهوية، والتمييز على وجه التحديد ما هو مختلف في نفس السلوك والدولة.

على سبيل المثال، الحيوان (الحيوانات) هي فئة مجردة، فإننا يمكن أن تكون محددة لخروف مع الكلب، والكلب مع الغنم هو هدف محدد، لديهم سمة اللون، يمكنك كتابة، يمكنك تشغيل أعمال أخرى من أعمال الدولة.


المحتوى وجوه المنحى

  • الفئة - يحدد خصائص مجردة من أي شيء.تعريف فئة يحتوي على بيانات النموذج والعمليات على البيانات.

  • الأشياء - هو مثيل للفئة.

  • المتغيرات عضو - المتغيرات محددة داخل الطبقة.القيمة الخارجية للمتغير غير مرئية، ولكن يمكن الوصول إليها من قبل وظائف الأعضاء، بعد أن يتم إنشاء مثيل الطبقة ككائن، وخصائص الكائن يمكن أن يسمى متغير.

  • وظيفة عضو - تعريفها داخل الطبقة يمكن استخدامها لكائنات الوصول إلى البيانات.

  • الميراث - الميراث هو فئة فرعية من تبادل التلقائي للهياكل البيانات وأساليب الفئة الأصل، وهو العلاقة بين الطبقات.في تحديد وتنفيذ طبقة، فإنها يمكن أن تأتي في هذا الأساس التي نفذت بالفعل، هذه الفئة موجودة بالفعل على النحو المحدد في مضمون محتواها، وإضافة بعض محتوى جديد.

  • الفئة الأصل - فئة التي ورثها الفئات الأخرى، يمكن أن يسمى الطبقة الوالد الطبقة أو الفئة أو الطبقة، أو الطبقة المتفوقة.

  • فرعية - فئة يرث فئة أخرى تسمى فرعية يمكن أيضا أن تسمى فئة مشتقة.

  • تعدد الأشكال - تعدد الأشكال يشير إلى نفس العملية أو وظيفة، وعملية يمكن تطبيقها على أنواع متعددة من الكائنات والحصول على نتائج مختلفة.كائنات مختلفة، تظهر نفس الرسالة قد يعطي نتائج مختلفة، وهذا ما يسمى ظاهرة تعدد الأشكال.

  • الزائد - القصير، بل هو وظيفة أو الأسلوب الذي يحمل نفس الاسم، ولكن قائمة المعلمات ليس هو نفس الوضع، مثل وظيفة أو الأسلوب بين المعايير المختلفة التي تحمل الاسم نفسه، ويسمى كل وظيفة زائد أو الأسلوب.

  • ويشير الملخص إلى وجود هيكل متسق البيانات (السمات) والسلوك (العمليات) من الكائنات في الطبقات - مجردة.هذه الطبقة هي فكرة مجردة، فإنه يعكس الخصائص الهامة المرتبطة مع التطبيق، في حين تجاهل المحتوى غير الآخر. أي التقسيم الطبقي هو شخصي، ولكن يجب أن تكون ذات علاقة تطبيق معين.

  • حزمة - يشير حزمة إلى خصائص وسلوك كائن في العالم الحقيقي موجود لربط معا ووضعها في وحدة منطقية.

  • منشئ - تستخدم أساسا لتهيئة الكائن عند إنشاء كائن، يتم تعيين الكائن قيمة أولية للمتغير العضو، دائما استخدام العبارة إنشاء كائن مع المشغل الجديد.

  • المدمر - المدمر (المدمر) ومنشئ في المقابل، عندما نهاية كائن من دورة حياتها (على سبيل المثال، حيث الهدف هو اكتمال استدعاء دالة)، ونظام ينفذ المدمر تلقائيا.وغالبا ما تستخدم لجعل تالفة "تنظيف أعقاب" العمل (على سبيل المثال، عند إنشاء كائن مع واحدة جديدة فتحت مساحة الذاكرة ينبغي أن تستخدم قبل أن تخرج في destructor حذف الإفراج).

الشكل التالي نخلق ثلاثة كائنات فئة السيارة: مرسيدس، بي ام دبليو، وأودي.

$mercedes = new Car ();
$bmw = new Car ();
$audi = new Car ();


تعريف فئة PHP

PHP فئة مخصصة عادة بناء الجملة كما يلي:

<?php
class phpClass {
  var $var1;
  var $var2 = "constant string";
  
  function myfunc ($arg1, $arg2) {
     [..]
  }
  [..]
}
?>

تفسر على النحو التالي:

  • بعد الطبقةباستخدام الكلمة الطبقةبالإضافة إلى اسم تعريف الفئة.

  • زوج من الأقواس بعد اسم الفئة يمكن تحديد المتغيرات والأساليب ({}) في الداخل.

  • ويمكن أيضا أن المتغيرات فئة باستخدامفار التصريح المتغيرات أن تتم تهيئة القيم.

  • PHP تعريف الدالة مشابه لتعريف وظيفة، ولكن وظيفة يمكن الوصول إليها إلا من خلال الطبقة وكائناتها مثيل.

أمثلة

<?php
class Site {
  /* 成员变量 */
  var $url;
  var $title;
  
  /* 成员函数 */
  function setUrl($par){
     $this->url = $par;
  }
  
  function getUrl(){
     echo $this->url . PHP_EOL;
  }
  
  function setTitle($par){
     $this->title = $par;
  }
  
  function getTitle(){
     echo $this->title . PHP_EOL;
  }
}
?>

$ هذا المتغير تمثل أهدافها.

PHP_EOL السطر الجديد.


PHP لإنشاء كائنات

بعد إنشاء الفئة، يمكننا استخدام المشغلالجديد لإنشاء مثيل كائن من الفئة:

$w3big = new Site;
$taobao = new Site;
$google = new Site;

رمز أعلاه يمكننا خلق ثلاثة أشياء، كل من الكائنات ثلاثة مستقلون، ثم ننظر في كيفية الوصول إلى أساليب الأعضاء والمتغيرات عضو.

يدعو أسلوب عضو

بعد إنشاء مثيل كائن، يمكننا استخدام الكائن استدعاء أسلوب الأعضاء وأسلوب الكائن يمكن إلا أن يكون عضوا في التشغيل متغير عضو من القطعة:

// 调用成员函数,设置标题和URL
$w3big->setTitle( "本教程" );
$taobao->setTitle( "淘宝" );
$google->setTitle( "Google 搜索" );

$w3big->setUrl( 'www.w3big.com' );
$taobao->setUrl( 'www.taobao.com' );
$google->setUrl( 'www.google.com' );

// 调用成员函数,获取标题和URL
$w3big->getTitle();
$taobao->getTitle();
$google->getTitle();

$w3big->getUrl();
$taobao->getUrl();
$google->getUrl();

رمز كاملة كما يلي:

أمثلة

<؟ PHP
الطبقة الموقع {
/ * * المتغيرات عضو /
فار $ رابط.
فار $ عنوان؛

/ * وظيفة الأعضاء * /
setUrl وظيفة ($ الاسمية) {
دولار هذا -> URL = $ قدم المساواة .
}

getUrl القيمة وظيفة () {
. صدى $ هذا -> رابط PHP_EOL .
}

setTitle وظيفة ($ الاسمية) {
دولار هذا -> عنوان = $ قدم المساواة .
}

تعمل getTitle () {
صدى $ هذا -> اللقب PHP_EOL. .
}
}

$ w3big = الموقع الجديد.
$ تاوباو = الموقع الجديد.
$ جوجل = الموقع الجديد.

ويسمى // وظيفة الأعضاء على تعيين العنوان وعنوان URL
$ w3big -> setTitle ( "البرنامج التعليمي")؛
$ تاوباو -> setTitle ( "تاوباو")؛
$ جوجل -> setTitle ( "Google بحث")؛

$ w3big -> setUrl ( 'www.w3big.com ')؛
$ تاوباو -> setUrl ( 'www.taobao.com ')؛
$ جوجل -> setUrl ( 'www.google.com ')؛

// دعوة الدالة العضو للحصول على لقب وعنوان URL
$ w3big -> getTitle ()؛
$ تاوباو -> getTitle ()؛
$ جوجل -> getTitle ()؛

$ w3big -> getUrl القيمة ()؛
$ تاوباو -> getUrl القيمة ()؛
$ جوجل -> getUrl القيمة ()؛
؟>

تشغيل المثال »

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

本教程
淘宝
Google 搜索
www.w3big.com
www.taobao.com
www.google.com

PHP منشئ

منشئ هو أسلوب خاص. تستخدم أساسا لتهيئة الكائن عند إنشاء كائن، يتم تعيين الكائن قيمة أولية للمتغير العضو، دائما استخدام العبارة إنشاء كائن مع المشغل الجديد.

PHP 5 تسمح للمطورين لتحديد صف واحد طريقة في الفئة مثل تركيب منشئ هو على النحو التالي:

void __construct ([ mixed $args [, $... ]] )

في المثال أعلاه، يمكننا تهيئة رابط $ و $ عنوان متغير عبر المنشئ:

function __construct( $par1, $par2 ) {
   $this->url = $par1;
   $this->title = $par2;
}

ونحن الآن لسنا في حاجة لاستدعاء setTitle طريقة وsetUrl:

أمثلة

$ w3big = الموقع الجديد ( 'www.w3big.com '، ' تعليمي')؛
$ تاوباو = الموقع الجديد ( 'www.taobao.com '، ' تاوباو')؛
$ جوجل = الموقع الجديد ( 'www.google.com '، 'جوجل بحث')؛

// دعوة الدالة العضو للحصول على لقب وعنوان URL
$ w3big-> getTitle ()؛
$ taobao-> getTitle ()؛
$ google-> getTitle ()؛

$ w3big-> getUrl القيمة ()؛
$ taobao-> getUrl القيمة ()؛
$ google-> getUrl القيمة ()؛

تشغيل المثال »

المدمر

المدمر (المدمر) ومنشئ في المقابل، عندما نهاية كائن من دورة حياتها (على سبيل المثال، حيث الهدف هو اكتمال استدعاء دالة)، ونظام ينفذ المدمر تلقائيا.

PHP 5 يدخل مفهوم المدمر، الذي يشبه إلى لغات أخرى وجوه المنحى، بناء الجملة كما يلي:

void __destruct ( void )

أمثلة

<?php
class MyDestructableClass {
   function __construct() {
       print "构造函数\n";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "销毁 " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

构造函数
销毁 MyDestructableClass

وراثة

PHPتمتد الكلمة في وراثة فئة، PHP لا يدعم راثة متعددة، في الشكل التالي:

class Child extends Parent {
   // 代码部分
}

أمثلة

الطبقة سبيل المثال Child_Site يرث الطبقة الموقع، وتمتد وظيفة:

<?php 
// 子类扩展站点类别
class Child_Site extends Site {
   var $category;

	function setCate($par){
		$this->category = $par;
	}
  
	function getCate(){
		echo $this->category . PHP_EOL;
	}
}

تجاوز الأسلوب

إذا كنت لا تستطيع ان تلبي احتياجات فئة فرعية يرث من أسلوب فئة الوالدين، ويمكن إعادة كتابة، وهي عملية تسمى تراكب طريقة (تجاوز)، المعروف أيضا باسم طريقة الرئيسي.

مثال إعادة كتابة getUrl القيمة وgetTitle طرق:

function getUrl() {
   echo $this->url . PHP_EOL;
   return $this->url;
}
   
function getTitle(){
   echo $this->title . PHP_EOL;
   return $this->title;
}

التحكم في الوصول

ويتحقق PHP على الممتلكات أو طريقة التحكم في الوصول بإضافة كلمات رئيسية أمام الجمهور (الجمهور)، المحمية (محمية) أو خاصة (الخاص) لتحقيق.

  • العام (العام): عضو الفئة العامة يمكن الوصول إلى أي مكان.
  • المحمية (المحمية): عضو فئة محمية يمكن الوصول إليها من قبل تلقاء نفسها وكذلك في فئة فرعية والفئة الأصل.
  • خاص (خاص): لا يمكن إلا أن يكون الوصول إليها أعضاء الفئة الخاص حيث تعريف الفئة.

سمات مراقبة الدخول

يجب تحديد سمة فئة كما،، واحد القطاعين العام والخاص المحمية. إذا المحددة مع فار، ويعتبر الجمهور.

<?php
/**
 * Define MyClass
 */
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
echo $obj->protected; // 这行会产生一个致命错误
echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private


/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
    // 可以对 public 和 protected 进行重定义,但 private 而不能
    protected $protected = 'Protected2';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj2 = new MyClass2();
echo $obj2->public; // 这行能被正常执行
echo $obj2->private; // 未定义 private
echo $obj2->protected; // 这行会产生一个致命错误
$obj2->printHello(); // 输出 Public、Protected2 和 Undefined

?>

وسائل التحكم في الوصول

ويمكن تعريف الأسلوب في الفصل الدراسي كما القطاعين العام والخاص أو محمية. إذا لم تقم بتعيين هذه الكلمات الرئيسية، والتخلف عن طريقة للجمهور.

<?php
/**
 * Define MyClass
 */
class MyClass
{
    // 声明一个公有的构造函数
    public function __construct() { }

    // 声明一个公有的方法
    public function MyPublic() { }

    // 声明一个受保护的方法
    protected function MyProtected() { }

    // 声明一个私有的方法
    private function MyPrivate() { }

    // 此方法为公有
    function Foo()
    {
        $this->MyPublic();
        $this->MyProtected();
        $this->MyPrivate();
    }
}

$myclass = new MyClass;
$myclass->MyPublic(); // 这行能被正常执行
$myclass->MyProtected(); // 这行会产生一个致命错误
$myclass->MyPrivate(); // 这行会产生一个致命错误
$myclass->Foo(); // 公有,受保护,私有都可以执行


/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
    // 此方法为公有
    function Foo2()
    {
        $this->MyPublic();
        $this->MyProtected();
        $this->MyPrivate(); // 这行会产生一个致命错误
    }
}

$myclass2 = new MyClass2;
$myclass2->MyPublic(); // 这行能被正常执行
$myclass2->Foo2(); // 公有的和受保护的都可执行,但私有的不行

class Bar 
{
    public function test() {
        $this->testPrivate();
        $this->testPublic();
    }

    public function testPublic() {
        echo "Bar::testPublic\n";
    }
    
    private function testPrivate() {
        echo "Bar::testPrivate\n";
    }
}

class Foo extends Bar 
{
    public function testPublic() {
        echo "Foo::testPublic\n";
    }
    
    private function testPrivate() {
        echo "Foo::testPrivate\n";
    }
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate 
                // Foo::testPublic
?>

السطح البيني

باستخدام واجهة (واجهة)، يمكنك تحديد الأساليب التي يجب على الطبقة تنفيذ، ولكن لا حاجة لتحديد محتوى معين من هذه الأساليب.

يتم تعريف الواجهة عن طريقالكلمة واجهة، مثل تعريف فئة القياسية، ولكن الذي يعرف كل الطرق فارغة.

كافة الأساليب التي يعرفها في واجهة يجب أن يكون العام الذي هو سمة من واجهة.

لتنفيذ واجهة، استخدم عاملالأدوات.الطبقة يجب تنفيذ جميع الطرق المحددة في واجهة، وإلا سوف يقدم تقريرا خطأ فادح. الفئة يمكن تنفيذ واجهات متعددة، استخدم الفواصل لفصل أسماء واجهات متعددة.

<?php

// 声明一个'iTemplate'接口
interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}


// 实现接口
class Template implements iTemplate
{
    private $vars = array();
  
    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
  
    public function getHtml($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }
 
        return $template;
    }
}

ثابت

يمكنك وضعها في الطبقة تبقى نفس القيم التي تعرف بأنها الثوابت. في تعريف واستخدام الثوابت الوقت لا تحتاج إلى استخدام الرمز $.

يجب أن تكون قيمة ثابت قيمة ثابتة، وليس متغير، سمات الطبقة، ونتائج الرياضيات أو استدعاء دالة.

منذ PHP 5.3.0 فصاعدا، يمكنك استخدام متغير للاتصال حيوي الطبقة. ولكن لا يمكن أن تكون قيمة المتغير كلمة (مثل النفس، الأم أو ثابتة).

أمثلة

<?php
class MyClass
{
    const constant = '常量值';

    function showConstant() {
        echo  self::constant . PHP_EOL;
    }
}

echo MyClass::constant . PHP_EOL;

$classname = "MyClass";
echo $classname::constant . PHP_EOL; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant . PHP_EOL; // 自 PHP 5.3.0 起
?>

فئة مجردة

أي فئة، إذا كان يحتوي على وأعلن أسلوب واحد على الأقل مجردة، ثم يجب أن يتم تعريف هذه الفئة مثل مجردة.

يعرف بأنه لا يمكن إنشاء مثيل فئة مجردة.

هو الذي يعرف بأنه وسيلة مجردة يعلن فقط في الاحتجاج (معلمات)، لا يمكنك تحديد تنفيذ وظيفة معينة.

وراثة فئة مجردة، يجب على جميع التعاريف أسلوب فئة الأم مجردة فرعية، بالإضافة إلى ذلك، يجب أن يكون الوصول إلى هذه الأساليب للسيطرة والفئة الأصل نفس (أو أكثر استرخاء). على سبيل المثال، أعلن محمية وسيلة مجردة، ثم تشهر طريقة تنفيذها في فئة فرعية كما المحمية أو الجمهور، ولكن لا يمكن تحديد طابع الخصوصية. ودعا أيضا طريقة يجب أن تتطابق، وهذا هو نوع وعدد من المعلمات المطلوبة يجب أن تكون متسقة. على سبيل المثال، فئة فرعية تحدد مقياس اختياري، والإعلان عن طريقة مجردة الفئة الأصل هناك لا، ثم لا يكون هناك تعارض بين العبارتين.

<?php
abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . PHP_EOL;
    }
}

class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}

class ConcreteClass2 extends AbstractClass
{
    public function getValue() {
        return "ConcreteClass2";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') . PHP_EOL;

$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') . PHP_EOL;
?>

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

ساكنة الكلمة

أعلن خصائص فئة أو طرق مثل ثابت (ثابت)، لا يمكنك إنشاء مثيل الفئة والوصول المباشر.

خاصية ثابتة من خلال فئة لا يمكن إنشاء مثيل كائن إلى وصول (ولكن يمكن أسلوب ثابت).

لأنه ليس مطلوبا من أساليب ثابتة للاتصال من خلال الكائن، وشبه متغير $ هذا لا يتوفر في أسلوب ثابت.

للوصول إلى> مشغل - ثابت الملكية وليس عن طريق هذا الموضوع.

منذ PHP 5.3.0 فصاعدا، يمكنك استخدام متغير للاتصال حيوي الطبقة. ولكن قيمة المتغير لا يمكن أن يكون ذاتي الكلمات الرئيسية، الأم أو ثابت.

<?php
class Foo {
  public static $my_static = 'foo';
  
  public function staticValue() {
     return self::$my_static;
  }
}

print Foo::$my_static . PHP_EOL;
$foo = new Foo();

print $foo->staticValue() . PHP_EOL;
?>	

البرنامج المذكور أعلاه، والناتج هو:

foo
foo

كلمة أخيرة

ويضيف PHP 5 والكلمة النهائية. إذا تم تعريف الأسلوب الفئة الأصل النهائي، وفئة فرعية لا يمكن تجاوز هذا الأسلوب. إذا أعلن فئة نهائي، فإنه لا يمكن أن تكون موروثة.

الخطأ بتنفيذ التعليمات البرمجية التالية:

<?php
class BaseClass {
   public function test() {
       echo "BaseClass::test() called" . PHP_EOL;
   }
   
   final public function moreTesting() {
       echo "BaseClass::moreTesting() called"  . PHP_EOL;
   }
}

class ChildClass extends BaseClass {
   public function moreTesting() {
       echo "ChildClass::moreTesting() called"  . PHP_EOL;
   }
}
// 报错信息 Fatal error: Cannot override final method BaseClass::moreTesting()
?>

استدعاء منشئ فئة الوالدين

PHP لا يدعو تلقائيا منشئ منشئ فئة الأصل في فئة فرعية. لتنفيذ منشئ فئة الأصل، ونحن بحاجة إلى استدعاءالأصل في منشئ فئة فرعية :: __ بناء ().

<?php
class BaseClass {
   function __construct() {
       print "BaseClass 类中构造方法" . PHP_EOL;
   }
}
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
       print "SubClass 类中构造方法" . PHP_EOL;
   }
}
class OtherSubClass extends BaseClass {
    // 继承 BaseClass 的构造方法
}

// 调用 BaseClass 构造方法
$obj = new BaseClass();

// 调用 BaseClass、SubClass 构造方法
$obj = new SubClass();

// 调用 BaseClass 构造方法
$obj = new OtherSubClass();
?>

البرنامج المذكور أعلاه، والناتج هو:

BaseClass 类中构造方法
BaseClass 类中构造方法
SubClass 类中构造方法
BaseClass 类中构造方法