ഈ സമഗ്രമായ ലേഖനത്തിൽ, ഞങ്ങൾ 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();
?>
മുകളിലുള്ള ഉദാഹരണത്തിന്റെ വിശദീകരണം
- മുകളിലെ ഉദാഹരണത്തിന്റെ അടിസ്ഥാന യുക്തി മുൻ ഉദാഹരണം പോലെയാണ്. എന്നിരുന്നാലും, ആമുഖ രീതിയിലുള്ള ഫംഗ്ഷനിലേക്ക് ഞങ്ങൾ അധിക ആർഗ്യുമെന്റ് നൽകുന്നു സുസുക്കി ക്ലാസ്.
- ഈ ട്യൂട്ടോറിയലിൽ ഞങ്ങൾ നേരത്തെ നിയമം നിർവചിച്ചിരിക്കുന്നതുപോലെ, പാരന്റ് ക്ലാസിന്റെ അമൂർത്ത രീതി നടപ്പിലാക്കുമ്പോൾ ചൈൽഡ് ക്ലാസിന്റെ ആക്സസ് മോഡിഫയർ ഈ രീതിയുടെ പ്രഖ്യാപനത്തിനായി പാരന്റ് ക്ലാസിൽ വ്യക്തമാക്കിയതിനേക്കാൾ കുറവായിരിക്കണം. അതിനാൽ, രണ്ട് ചൈൽഡ് ക്ലാസുകളും ആമുഖ രീതി നിർവചിക്കുന്നതിന് പൊതു ആക്സസ് മോഡിഫയർ ഉപയോഗിക്കുന്നു.
- സ്വകാര്യ ആക്സസ് മോഡിഫയർ ഉപയോഗിച്ച് ഫംഗ്ഷൻ നിർവചിക്കാൻ ശ്രമിക്കുക, അത് ഒരു പിശക് സൃഷ്ടിക്കും.
ശ്രദ്ധിക്കുക: അബ്സ്ട്രാക്റ്റ് ക്ലാസിൽ കൺസ്ട്രക്റ്റർ രീതികളൊന്നും അടങ്ങിയിട്ടില്ല. അതിനാൽ, നമുക്ക് ഒരു അമൂർത്ത ക്ലാസ്സിന്റെ ഉദാഹരണം സൃഷ്ടിക്കാൻ കഴിയില്ല.