PHP-യിലെ ഒരു അബ്‌സ്‌ട്രാക്റ്റ് ക്ലാസ് എന്താണ്?

PHP OOP-യിലെ സ്ഥിരാങ്കങ്ങൾ
php ഇന്റർഫേസ് vs അമൂർത്ത ക്ലാസ്

ഈ സമഗ്രമായ ലേഖനത്തിൽ, ഞങ്ങൾ PHP അമൂർത്ത ക്ലാസുകളുടെ മേഖലയിലേക്ക് ആഴത്തിൽ പോകും. തത്ത്വങ്ങൾ മനസ്സിലാക്കുന്നത് മുതൽ വാക്യഘടനയും നടപ്പാക്കലും പരിശോധിക്കുന്നത് വരെ നിങ്ങളുടെ പിഎച്ച്പി വികസന പദ്ധതികളിൽ അമൂർത്തമായ ക്ലാസുകൾ എങ്ങനെ പ്രയോജനപ്പെടുത്താം എന്നതിന്റെ പൂർണ്ണമായ അവലോകനം ഈ ലേഖനം നിങ്ങൾക്ക് വാഗ്ദാനം ചെയ്യും. നിങ്ങളൊരു തുടക്കക്കാരനായാലും പരിചയസമ്പന്നനായ ഡെവലപ്പറായാലും, നിങ്ങളുടെ കോഡിലെ അമൂർത്ത ക്ലാസുകളിൽ വിജയകരമായി പ്രവർത്തിക്കാനുള്ള അറിവും കഴിവുകളും ഈ ലേഖനം നിങ്ങൾക്ക് നൽകും.

ഒരു അമൂർത്ത ക്ലാസിൽ രീതികളുടെ പ്രഖ്യാപനം അടങ്ങിയിരിക്കുന്നു, പക്ഷേ അവയുടെ നിർവചനമല്ല. അതിൽ അവരുടെ പേരുകൾ മാത്രമേ ഉള്ളൂ. ഈ രീതികൾ നിർവചിക്കേണ്ടത് കുട്ടി ക്ലാസിന്റെ ഉത്തരവാദിത്തമാണ്.

എന്താണ് ഒരു അമൂർത്ത രീതി?

അമൂർത്തമായ കീവേഡുകൾ ഉപയോഗിച്ച് പ്രഖ്യാപിച്ചതും ബോഡി അടങ്ങിയിട്ടില്ലാത്തതുമായ ഒരു അമൂർത്ത ക്ലാസിന്റെ ഒരു രീതിയാണ് അമൂർത്ത രീതി. കുട്ടിയുടെ ക്ലാസ് കൊണ്ടാണ് ഇത് നിർവചിക്കുന്നത്.

  • വേര്പെട്ടുനില്ക്കുന്ന ഒരു അമൂർത്ത ക്ലാസ് അല്ലെങ്കിൽ രീതി പ്രഖ്യാപിക്കാൻ കീവേഡ് ഉപയോഗിക്കുന്നു.
  • ഒരു അമൂർത്ത ക്ലാസിൽ കുറഞ്ഞത് ഒരു അമൂർത്ത രീതിയെങ്കിലും അടങ്ങിയിരിക്കണം. എന്നിരുന്നാലും, അതിൽ അമൂർത്തമല്ലാത്ത രീതികളും അടങ്ങിയിരിക്കാം.

പദവിന്യാസം

<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

PHP-യിലെ അബ്സ്ട്രാക്റ്റ് ക്ലാസ്സിന്റെ നിയമങ്ങൾ എന്തൊക്കെയാണ്?

  • ഒരു അമൂർത്ത ക്ലാസിൽ കുറഞ്ഞത് ഒരു അമൂർത്ത രീതിയെങ്കിലും അടങ്ങിയിരിക്കണം. എന്നിരുന്നാലും, അതിൽ അമൂർത്തമല്ലാത്ത രീതികളും അടങ്ങിയിരിക്കാം.
  • അബ്‌സ്‌ട്രാക്റ്റ് പാരന്റ് ക്ലാസ് എന്ന് വിളിക്കപ്പെടുന്ന കുട്ടി അവകാശപ്പെടുമ്പോൾ, അത് അതേ പേരിലുള്ള പാരന്റ് ക്ലാസിന്റെ അമൂർത്ത രീതികൾ നിർവ്വചിക്കണം.
  • ചൈൽഡ് ക്ലാസിലെ അസ്‌ബ്‌ട്രാക്റ്റ് രീതികൾ നിർവചിക്കുമ്പോൾ, അത് കുറച്ച് നിയന്ത്രിത ആക്‌സസ് മോഡിഫയർ ഉപയോഗിച്ച് നിർവചിക്കേണ്ടതാണ്. ഉദാഹരണത്തിന്, പാരന്റ് ക്ലാസിൽ അമൂർത്തമായ രീതി അടങ്ങിയിട്ടുണ്ടെങ്കിൽ സംരക്ഷിച്ചിരിക്കുന്നു ആക്സസ് മോഡിഫയർ. അതിനാൽ, ചൈൽഡ് ക്ലാസ് ഈ രീതി നിർവചിക്കുമ്പോൾ, അത് അതിന്റെ ആക്‌സസ് മോഡിഫയർ ഒന്നുകിൽ സൂക്ഷിക്കണം സംരക്ഷിച്ചിരിക്കുന്നു or പൊതു. ഇത് സജ്ജമാക്കാൻ കഴിയില്ല സ്വകാര്യ, കാരണം അത് സംരക്ഷിതത്തേക്കാൾ കൂടുതൽ നിയന്ത്രിതമാണ്.
  • അമൂർത്തമായ രീതി നിർവചിക്കുന്ന ചൈൽഡ് ക്ലാസ് പാരന്റ് അസ്‌ബ്‌ട്രാക്റ്റ് ക്ലാസിലെ ഡിക്ലറേഷനിൽ വ്യക്തമാക്കിയിരിക്കുന്ന തുല്യമായ ആർഗ്യുമെന്റുകൾ പാസാക്കണം. എന്നിരുന്നാലും, ചൈൽഡ് ക്ലാസിന് ആവശ്യമുള്ളത് കൂടാതെ ഓപ്ഷണൽ/അധിക ആർഗ്യുമെന്റുകൾ ഉണ്ടായിരിക്കാം.

PHP-യിലെ അബ്‌സ്‌ട്രാക്റ്റ് ക്ലാസിന്റെ ഉദാഹരണം

മുകളിലുള്ള ഉദാഹരണത്തിന്റെ വിശദീകരണം

<!-- wp:code -->
<pre class="wp-block-code"><code><?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function introduction() : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro() : string {
    return "I am $this->name!";
  }
}

class Suzuki extends Bike {
  public function introduction() : string {
    return "I am $this->name!";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();

?></code></pre>
<!-- /wp:code -->
  • മുകളിലുള്ള ഉദാഹരണത്തിൽ, ഞങ്ങൾ ഒരു അമൂർത്ത ക്ലാസ് സൃഷ്ടിക്കുന്നു ബൈക്ക് അതിൽ ഒരു അമൂർത്ത രീതി അടങ്ങിയിരിക്കുന്നു അവതാരിക.
  • ഞങ്ങൾ രണ്ട് കുട്ടികളുടെ ക്ലാസുകൾ സൃഷ്ടിക്കുന്നു ഹോണ്ട ഒപ്പം സുസുക്കി അത് അമൂർത്ത ക്ലാസ് വിപുലീകരിക്കുകയും ആമുഖ രീതി നിർവചിക്കുകയും ചെയ്യുന്നു.
  • ഞങ്ങൾ ഈ ക്ലാസുകളുടെ ഒബ്ജക്റ്റുകൾ സൃഷ്ടിക്കുകയും അവയുടെ ഒബ്ജക്റ്റുകൾ ഉപയോഗിച്ച് ആമുഖ രീതിയെ വിളിക്കുകയും ചെയ്യുന്നു. ആമുഖ രീതി അതിന്റെ അനുബന്ധ ക്ലാസ് നൽകുന്ന നടപ്പിലാക്കൽ അനുസരിച്ച് പ്രവർത്തിക്കുന്നു.

മെത്തേഡ് ഓവർറൈഡിംഗിൽ അധിക ആർഗ്യുമെന്റുകളുള്ള അമൂർത്ത ക്ലാസിന്റെ ഉദാഹരണം

<?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract protected function introduction($model) : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro($model) : string {
    return "I am $this->name. My model is $model";
  }
}

class Suzuki extends Bike {
  public function introduction($model, $color=null) : string {
    return "I am $this->name. My model is $model and color is $color";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>

മുകളിലുള്ള ഉദാഹരണത്തിന്റെ വിശദീകരണം

  • മുകളിലെ ഉദാഹരണത്തിന്റെ അടിസ്ഥാന യുക്തി മുൻ ഉദാഹരണം പോലെയാണ്. എന്നിരുന്നാലും, ആമുഖ രീതിയിലുള്ള ഫംഗ്‌ഷനിലേക്ക് ഞങ്ങൾ അധിക ആർഗ്യുമെന്റ് നൽകുന്നു സുസുക്കി ക്ലാസ്.
  • ഈ ട്യൂട്ടോറിയലിൽ ഞങ്ങൾ നേരത്തെ നിയമം നിർവചിച്ചിരിക്കുന്നതുപോലെ, പാരന്റ് ക്ലാസിന്റെ അമൂർത്ത രീതി നടപ്പിലാക്കുമ്പോൾ ചൈൽഡ് ക്ലാസിന്റെ ആക്‌സസ് മോഡിഫയർ ഈ രീതിയുടെ പ്രഖ്യാപനത്തിനായി പാരന്റ് ക്ലാസിൽ വ്യക്തമാക്കിയതിനേക്കാൾ കുറവായിരിക്കണം. അതിനാൽ, രണ്ട് ചൈൽഡ് ക്ലാസുകളും ആമുഖ രീതി നിർവചിക്കുന്നതിന് പൊതു ആക്സസ് മോഡിഫയർ ഉപയോഗിക്കുന്നു.
  • സ്വകാര്യ ആക്സസ് മോഡിഫയർ ഉപയോഗിച്ച് ഫംഗ്ഷൻ നിർവചിക്കാൻ ശ്രമിക്കുക, അത് ഒരു പിശക് സൃഷ്ടിക്കും.

ശ്രദ്ധിക്കുക: അബ്‌സ്‌ട്രാക്റ്റ് ക്ലാസിൽ കൺസ്ട്രക്‌റ്റർ രീതികളൊന്നും അടങ്ങിയിട്ടില്ല. അതിനാൽ, നമുക്ക് ഒരു അമൂർത്ത ക്ലാസ്സിന്റെ ഉദാഹരണം സൃഷ്ടിക്കാൻ കഴിയില്ല.

ക്ലാസ് അമൂർത്തീകരണം PHP 8 ഔദ്യോഗിക ഡോക്യുമെന്റേഷൻ.

PHP OOP-യിലെ സ്ഥിരാങ്കങ്ങൾ
php ഇന്റർഫേസ് vs അമൂർത്ത ക്ലാസ്

PHP-യെ കുറിച്ച് കാലികമായിരിക്കുക!

ഞങ്ങൾ സ്പാം ചെയ്യുന്നില്ല!

en English
X
ടോപ്പ് സ്ക്രോൾ