Έξυπνες αναζητήσεις
Το googling είναι μια από τις πιο σημαντικές δεξιότητες για κάθε προγραμματιστή. Ας δούμε πώς κάνουμε εξειδικευμ...
Το googling είναι μια από τις πιο σημαντικές δεξιότητες για κάθε προγραμματιστή. Ας δούμε πώς κάνουμε εξειδικευμ...
Στη JavaScript, οι χρονικές σημάνσεις συνήθως συσχετίζονται με την ώρα Unix. Και υπάρχουν διαφορετικές μέθοδοι για τ...
Αλληλεπιδρούμε πολύ με το HTTP και το HTTPS στην καθημερινή μας ζωή, αλλά πολλοί από εμάς δεν γνωρί...
An absolute path refers to defining the full exact file path, for example, D:\http\project\lib\file.php. While a relative path is based on the current working directory, where the script is located. ...
What Is a PHP Interface? A PHP interface defines a contract which a class must fulfill. If a PHP class is a blueprint for objects, an interface is a blueprint for classes. Any class implementing a ...
@PHP: Στατικές συναρτήσεις και κλάσεις. Οι στατικές συναρτήσεις και οι στατικές κλάσεις είναι εύκολα προσβάσιμες χωρίς απαραίτητα να δημιουργηθεί ένα στιγμιότυπο αυτής της κλάσης. Αυτό σας βοηθά να διατηρείτε τον κώδικα καθαρό και οργανωμένο.
Χρήση της static λέξης-κλειδιού με μέθοδο ή μεταβλητή: Η static είναι μια ειδική λέξη-κλειδί στην PHP. Όπου χρησιμοποιείται, σε μεθόδους ή ιδιότητες κλάσης, επιτρέπει την πρόσβαση σε αυτές στην ίδια την κλάση αντί σε μια παρουσία της συγκεκριμένης κλάσης. Αντί λοιπόν να γράψετε:
$object = new MyClass();
$object.someMethod();
μπορούμε να γράψουμε:
MyClass::someStaticMethod();
Επομένως, κάθε φορά που μια μέθοδος δηλώνεται ως στατική, μπορεί εύκολα να προσπελαστεί χωρίς να χρειάζεται να δημιουργηθεί ένα αντικείμενο για την κλάση. Φυσικά, αυτό λειτουργεί μόνο για μεθόδους που δεν χρειάζεται να χρησιμοποιούν δεδομένα από τις παρουσίες μιας κλάσης. Η δήλωση μιας μεθόδου ως στατικής την περιορίζει στην πρόσβαση σε στατικές μεθόδους και στατικές μεταβλητές.
<?php
class SomeClass {
//Declaring a static variable
public static $design_name = 'Windsurfing World';
//Declaring a static function
public static function newFunction() {
echo self::$design_name;
}
}
SomeClass::newFunction()
?>
Η έξοδος για το παραπάνω απόσπασμα κώδικα θα ήταν: Windsurfing World
Ωστόσο, μια στατική μέθοδος μπορεί να προσπελαστεί με μια μη στατική μέθοδο εντός της ίδιας κλάσης με τη χρήση του self::
<?php
class regards {
public static function greetings(){
echo 'Γεια!';
}
public function __construct(){
//accessing the greetings static function through the construct() non-static method
self::greetings();
}
}
new regards();
?>
Όταν δημιουργείτε μια νέα παρουσία της κλάσης, ο contructor θα καλέσει τη στατική συνάρτηση και την έξοδο Γεια!. Μπορείτε επίσης να αποκτήσετε πρόσβαση σε μια στατική μέθοδο σε μια κλάση από μια άλλη κλάση κάνοντας τη στατική μέθοδο δημόσια.
<?php
class FirstClass {
public static function firstFunction(){
echo 'Ας δούμε πώς λειτουργεί';
}
}
class SecondClass{
public function functionTwo(){
FirstClass::firstFunction();
}
}
$class1 = new SecondClass;
echo $class1 -> functionTwo();
?>
Αυτός ο κωδικός θα δώσει:
Ας δούμε πώς λειτουργεί
Μια στατική μέθοδος μπορεί επίσης να κληθεί από μια child κλάση (έννοια της κληρονομικότητας) χρησιμοποιώντας τη λέξη-κλειδί parent μέσα στην child κλάση. Σε αυτήν την περίπτωση, η στατική μέθοδος θα μπορούσε είτε να είναι public είτε protected. Εάν θέλετε να χρησιμοποιήσετε μια στατική μέθοδο μέσε σε subclasses, αλλά όχι εκτός της κλάσης, μπορείτε να δηλώσετε τη μέθοδο με τη λέξη-κλειδί protected.
<?php
class address {
protected static function retrieveIPAddress() {
return '197.254.48.214';
}
}
class address2 extends address {
public $IPAddress;
public function __construct(){
$this->IPAddress = parent::retrieveIPAddress();
}
}
$address2 = new address2;
echo $address2 -> IPAddress;
?>
Στο παραπάνω απόσπασμα κώδικα, η θυγατρική κλάση address2 κληρονομείται από τη γονική κλάση address. Στη θυγατρική κλάση υπάρχει μια public δηλωμένη μεταβλητή στην οποία προσπελάζεται η μη στατική μέθοδος κατασκευής __construct(). Στη συνέχεια γίνεται πρόσβαση στη στατική μέθοδο retrieveIPAddress με parent::retrieveIPAddress. Η διεύθυνση IP επιστρέφεται ως έξοδος.
Στατικές κλάσεις: Βασικά, μια κλάση είναι ένας ανεξάρτητος και αυτοτελής τύπος δεδομένων που μπορεί να περιέχει μέλη δεδομένων που ονομάζονται ιδιότητες και συναρτήσεις μέλους, στα οποία είναι δυνατή η πρόσβαση μόνο με την προετοιμασία μιας παρουσίας αυτής της κλάσης. Η δήλωση μιας κλάσης ως στατικής επιτρέπει στις τιμές που διατηρεί να παραμείνουν ίδιες για κάθε παρουσία αυτής της κλάσης. Μια μη στατική κλάση, από την άλλη πλευρά, μπορεί να έχει διαφορετικές τιμές ιδιοτήτων για κάθε περίπτωση.
Πώς να δημιουργήσετε μια στατική κλάση. Μια κλάση γίνεται στατική όταν οι μεταβλητές και οι μέθοδοι που ορίζονται σε αυτήν γίνονται στατικές χρησιμοποιώντας τη λέξη-κλειδί static. Μπορείτε να προσπελάσετε μια στατική κλάση και τις καθορισμένες στατικές μεθόδους της χρησιμοποιώντας το όνομα της κλάσης, τον ::τελεστή (ανάλυση πεδίου) και το όνομα της μεθόδου, όπως εμφανίζεται στο παρακάτω απόσπασμα.
name_of_class::name_of_method();
<?php
class Student
{
public $school;
public $course;
public static $registrationNumberLength = 13;
public function Details()
{
return $this->course . 'course belongs to the school of' . $this->school;
}
public static function verifyRegNumber($registrationNumber)
{
if (strlen($registrationNumber) >= self::$registrationNumberLength)
return true;
else
return false;
}
}
$registrationNumber = 'J17/0798/201';
if (Student::VerifyRegNumber($registrationNumber))
echo 'Registration Number length is correct';
else
echo 'Registration Number length is invalid';
?>
Στο παραπάνω πρόγραμμα έχουμε κάνει στατικές και τη μεταβλητή $registrationNumberLength και τη συνάρτηση verifyRegNumber(). Θυμηθείτε ότι μπορείτε να έχετε πρόσβαση σε στατικές μεταβλητές μόνο από στατικές συναρτήσεις και με αυτόν τον τρόπο δεν θα χρειαστεί να δημιουργήσουμε την κλάση σε κανένα σημείο. Στην πραγματικότητα είναι πολύ πιο εύκολο να δουλέψεις με τις μεταβλητές και τις συναρτήσεις στατικά με την έννοια ότι παρέχεται μια γενική λειτουργικότητα και οι πληροφορίες που χρησιμοποιούνται δεν είναι συγκεκριμένες για τον ένα μαθητή. Παρατηρήστε ότι κατά την πρόσβαση στις μεταβλητές $course και $school, οι οποίες είναι μη στατικές, τις επιστρέψαμε χρησιμοποιώντας τη λέξη-κλειδί this και το -> βέλος για να υπονοήσουμε ότι είναι παρουσίες της Student κλάσης. Οπότε, βασικά, η κύρια διαφορά μεταξύ στατικών μελών και των κανονικών κλάσεων, μεθόδων και μεταβλητών κατά την πρόσβαση σε αυτά είναι η χρήση της διπλής άνω και κάτω τελείας :: αντί του ->τελεστή βέλους.
Εγγραφείτε για να βλέπετε τα εξειδικευμένα άρθρα.