سؤال

كيف يمكنني تعيين متغير عام. هل هذا صحيح؟:

class Testclass
{
  public $testvar = "default value";

  function dosomething()
  {
    echo $this->testvar;
  }
}

$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething();
هل كانت مفيدة؟

المحلول

هذه هي الطريقة ، لكنني أقترح كتابة getter و setter لهذا المتغير.

class Testclass

{
    private $testvar = "default value";

    public function setTestvar($testvar) { 
        $this->testvar = $testvar; 
    }
    public function getTestvar() { 
        return $this->testvar; 
    }

    function dosomething()
    {
        echo $this->getTestvar();
    }
}

$Testclass = new Testclass();

$Testclass->setTestvar("another value");

$Testclass->dosomething();

نصائح أخرى

استخدام المنشئين.

<?php
class TestClass
{
    public $testVar = "default value";
    public function __construct($varValue)
    {
       $this->testVar = $varValue;               
    }
}    
$object = new TestClass('another value');
print $object->testVar;
?>
class Testclass
{
  public $testvar;

  function dosomething()
  {
    echo $this->testvar;
  }
}

$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething(); ////It will print "another value"

من أجل التحميل الزائد ، ستحتاج إلى فئة فرعية:

class ChildTestclass extends Testclass {
    public $testvar = "newVal";
}

$obj = new ChildTestclass();
$obj->dosomething();

هذا الرمز سيتردد newVal.

أنت "إعداد" قيمة هذا المتغير/السمة. عدم تجاوزه أو زيادة تحميله. الكود الخاص بك شائع جدا وعادي.

كل هذه المصطلحات ("Set" ، "Override" ، "Overload") لها معاني محددة. التجاوز والحمل الزائد تدور حول تعدد الأشكال (التصنيف الفرعي).

من http://en.wikipedia.org/wiki/Object-oriented_programming :

تتيح تعدد الأشكال للمبرمج معالجة أعضاء الفصل المشتقون تمامًا مثل أعضاء فئة الوالدين. بتعبير أدق ، تعدد الأشكال في البرمجة الموجهة للكائنات هو قدرة الكائنات التي تنتمي إلى أنواع البيانات المختلفة للاستجابة لمكالمات طرق الأساليب التي تحمل نفس الاسم ، كل واحد وفقًا لسلوك خاص بخصوص النوع. يمكن تطبيق طريقة واحدة ، أو مشغل مثل +، أو -أو *، بشكل مجردة في العديد من المواقف المختلفة. إذا كان الكلب أمرًا بالتحدث () ، فقد يثير هذا اللحاء (). ومع ذلك ، إذا تم أمر الخنزير بالتحدث () ، فقد يثير هذا Oink (). يرث كلاهما يتحدث () من الحيوانات ، لكن أساليب الطبقة المشتقة تتجاوز طرق الطبقة الوالدية ؛ هذا هو تعدد الأشكال. تعدد الأشكال الزائد هو استخدام توقيع طريقة واحدة ، أو مشغل واحد مثل "+" ، لأداء العديد من الوظائف المختلفة اعتمادًا على التنفيذ. يمكن استخدام مشغل "+" ، على سبيل المثال ، لإضافة عدد صحيح ، أو إضافة تعويم ، أو تسلسل قائمة ، أو سلسلة متسلسلة. من المتوقع أن تضيف أي فئتين فرعيتين من العدد ، مثل عدد صحيح ومزدوج ، معًا بشكل صحيح بلغة OOP. لذلك يجب أن تفرط اللغة في تشغيل مشغل الإضافة ، "+" ، للعمل بهذه الطريقة. هذا يساعد على تحسين قابلية قراءة التعليمات البرمجية. يختلف كيفية تنفيذ ذلك من لغة إلى أخرى ، لكن معظم لغات OOP تدعم على الأقل مستوى من الأشكال الزائد.

إذا كنت ستتبع الأمثلة المقدمة (باستخدام getter/setter أو إعدادها في المنشئ) قم بتغييره إلى خاص لأن هذه هي طرق للتحكم في ما يتم تعيينه في المتغير.

ليس من المنطقي الحفاظ على الممتلكات العامة مع كل تلك الأشياء التي تمت إضافتها إلى الفصل.

أضف طريقة getter و setter إلى فصلك.

public function setValue($new_value)
{
    $this->testvar = $new_value;
}

public function getValue()
{
    return $this->testvar;        
}

داخل class Testclass:

public function __construct($new_value)
{
    $this->testvar = $new_value;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top