diff --git a/01-classes.php b/01-classes.php deleted file mode 100644 index 338cccf..0000000 --- a/01-classes.php +++ /dev/null @@ -1,21 +0,0 @@ -"; -var_dump($oldMobile); diff --git a/02-properties.php b/02-properties.php deleted file mode 100644 index 010aad5..0000000 --- a/02-properties.php +++ /dev/null @@ -1,50 +0,0 @@ - ) for accessing properties - -// we can assign those public properties in our class with this syntax -$modernMobile->name = "Samsung s20"; -$modernMobile->chipset = "Exynos"; -$modernMobile->internalMemory = 128; - -echo "
"; - -// we can also access properties value by the arrow operator -echo $modernMobile->chipset; - -// what happens if we assign a non existing value or a wrong value? -$modernMobile->ramMemory = 1; -$modernMobile->internMemory = 8; - -echo "
";
-var_dump($modernMobile);
-echo "
"; - -echo "
"; - -//----------------------------------------------------- -// arrow operator is unique in objects and must not be -// confused with double arrow operator used in arrays -//----------------------------------------------------- - -// this is an example using an array and double arrow operators -$mobileArray = [ - 'name' => 'Xiaomi Mi10', - 'chipset' => 'Snapdragon', - 'internalMemory' => 64 -]; -echo $mobileArray['chipset']; \ No newline at end of file diff --git a/03-methods.php b/03-methods.php deleted file mode 100644 index bf92984..0000000 --- a/03-methods.php +++ /dev/null @@ -1,28 +0,0 @@ -name . " includes a " . $this->chipset . " chipset and " . $this->internalMemory . "GB of internal memory"; - } -} - - -$modernMobile = new Mobile(); -$modernMobile->name = "Samsung s20"; -$modernMobile->chipset = "Exynos"; -$modernMobile->internalMemory = 128; - -echo $modernMobile->showSpecs(); diff --git a/04-getters.php b/04-getters.php deleted file mode 100644 index 84cf90c..0000000 --- a/04-getters.php +++ /dev/null @@ -1,61 +0,0 @@ -name . " ---"; - } - - public function getChipset() - { - return $this->chipset; - } - - public function getInternalMemory() - { - return $this->internalMemory; - } -} - - -$modernMobile = new Mobile(); -$modernMobile->name = "Samsung s20"; -$modernMobile->chipset = "Exynos"; -$modernMobile->internalMemory = 128; - -echo "--- GETTERS ---"; -echo "
"; -echo $modernMobile->getName(); -echo "
"; -echo $modernMobile->getChipset(); -echo "
"; -echo $modernMobile->getInternalMemory(); - - -//----------------------------------------------------- -// with this scenario where all properties are public -// there won't be any differences between using getters -// or accessing the properties via arrow operator -//----------------------------------------------------- - -echo "

"; -echo "--- ARROW OPERATOR ---"; -echo "
"; - -echo $modernMobile->name; -echo "
"; -echo $modernMobile->chipset; -echo "
"; -echo $modernMobile->internalMemory; diff --git a/05-setters.php b/05-setters.php deleted file mode 100644 index e86c9b6..0000000 --- a/05-setters.php +++ /dev/null @@ -1,42 +0,0 @@ -internalMemory; - } - - // setters are methods for changing properties - public function setInternalMemory($internalMemory) - { - echo "* CHANGED internal memory from " . $this->internalMemory; - $this->internalMemory = $internalMemory; - echo " to " . $this->internalMemory; - } -} - -echo "
"; - -$modernMobile = new Mobile(); -$modernMobile->name = "Samsung s20"; -$modernMobile->chipset = "Exynos"; -$modernMobile->internalMemory = 128; - - -echo "
"; -echo $modernMobile->getInternalMemory(); -echo "
"; -$modernMobile->setInternalMemory(256); -echo "
"; -echo $modernMobile->getInternalMemory(); diff --git a/06-constructors.php b/06-constructors.php deleted file mode 100644 index 59831d5..0000000 --- a/06-constructors.php +++ /dev/null @@ -1,34 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - echo "+ " . $this->name . " CREATED +
"; - } - - // PHP will call __destruct at the end of the script, when the object is destructed or the script is stopped or exited. - function __destruct() - { - echo "- DESTROYED : " . $this->name . " includes a " . $this->chipset . " chipset and " . $this->internalMemory . "GB of internal memory -
"; - } -} - -// Now we can instantiate a mobile object passing arguments in the correct order -$modernMobile = new Mobile('Samsung s20', 'Exynos', 128); -$oldMobile = new Mobile('BlackBerry', 'ARM', 1); -echo "
"; diff --git a/07-inheritance-problem.php b/07-inheritance-problem.php deleted file mode 100644 index 53c6971..0000000 --- a/07-inheritance-problem.php +++ /dev/null @@ -1,67 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - echo "+ " . $this->name . " CREATED +
"; - } - - function __destruct() - { - echo "- DESTROYED : " . $this->name . " includes a " . $this->chipset . " chipset and " . $this->internalMemory . "GB of internal memory -
"; - } -} - -// We need a class for mobiles with extra properties and methods that won't have every mobile -// For example we could need a class for a mobile device with physical keyboard so we create a new one - -class Blackberry -{ - public $name; - public $chipset; - public $internalMemory; - public $keyboard; - - - public function __construct($name, $chipset, $internalMemory, $keyboard) - { - $this->name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - $this->keyboard = $keyboard; - echo "+ " . $this->name . " CREATED +
"; - } - - //new method for getting keyboard type - public function getKeyboard() - { - return $this->keyboard; - } - - function __destruct() - { - echo "- DESTROYED : " . $this->name . " includes a " . $this->chipset . " chipset and " . $this->internalMemory . "GB of internal memory. It uses " . $this->keyboard . " Keyboard -
"; - } -} - -$samsung = new Samsung('Samsung s20', 'Exynos', 128); -$blackberry = new BlackBerry('BlackBerry', 'ARM', 1, 'qwerty'); -echo "
"; - -// Seems that we are repeating too much code... \ No newline at end of file diff --git a/08-inheritance-solution.php b/08-inheritance-solution.php deleted file mode 100644 index 6fe6b51..0000000 --- a/08-inheritance-solution.php +++ /dev/null @@ -1,70 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - } - - public function getName() - { - return $this->name; - } - - public function getChipset() - { - return $this->chipset; - } - - public function getInternalMemory() - { - return $this->internalMemory; - } - - public function getMobileDetails() - { - return "Name: $this->name, Chipset: $this->chipset, Internal Memory: $this->internalMemory"; - } -} - -// When you extend a class, the subclass inherits all of the public and protected methods from the parent class. -class Blackberry extends Mobile -{ - public $keyboard; - - // in php we use __construct to tell our class that this is the constructor method - public function __construct($name, $chipset, $internalMemory, $keyboard) - { - // we use same constructor as father class with parent keyword and double colon - parent::__construct($name, $chipset, $internalMemory); - // and add new arguments necessary for the new son class - $this->keyboard = $keyboard; - } - - //new method for getting keyboard type - public function getKeyboard() - { - return $this->keyboard; - } -} - -$samsung = new Mobile('Samsung s20', 'Exynos', 128); -$blackberry = new BlackBerry('BlackBerry', 'ARM', 1, 'qwerty'); -echo $blackberry->getName(); -echo "\n"; -echo $blackberry->getMobileDetails(); diff --git a/09-public-private-protected.php b/09-public-private-protected.php deleted file mode 100644 index abebdba..0000000 --- a/09-public-private-protected.php +++ /dev/null @@ -1,93 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - $this->imei = $imei; - echo "+ " . $this->name . " CREATED +
"; - } - - // now getters methods meke more sense because we won't be able to access properties outside the class - public function getName() - { - return "--- " . $this->name . " ---
"; - } - - public function getChipset() - { - return $this->chipset; - } - - public function getInternalMemory() - { - return $this->internalMemory; - } - - // protected elements can be accessed only within the class itself and inside inherited classes. - protected function getIMEI() - { - return $this->imei; - } -} - -class Blackberry extends Mobile -{ - private $keyboard; - - public function __construct($name, $chipset, $internalMemory, $imei, $keyboard) - { - parent::__construct($name, $chipset, $internalMemory, $imei); - $this->keyboard = $keyboard; - } - - // show protected imei - public function showIMEI() - { - return $this->getIMEI(); - } -} - -$samsung = new Mobile('Samsung s20', 'Exynos', 128, '000111222333'); -$blackberry = new BlackBerry('BlackBerry', 'ARM', 1, '99966688555', 'qwerty'); - -//----------------------------------------------------- -// with this scenario we can't access private or protected -// attributes or methods via arrow operator -//----------------------------------------------------- - -echo "
"; -echo $samsung->getName(); // OK | Public method accessing a public property inside the class -echo "
"; -echo $samsung->name; // OK | Public property -echo "
"; -echo $samsung->getChipset(); // OK | Public method accessing a protected property inside the class -echo "
"; -echo $samsung->chipset; // ERROR | Private property so we can't access outside the class and throws: Fatal error: Uncaught Error: Cannot access privated property Mobile::$chipset -echo "
"; -echo $samsung->getIMEI(); // ERROR | Protected method so we can't call it outside our class and throws: Fatal error: Uncaught Error: Call to protected method Mobile::getIMEI() from context -echo "
"; -echo $samsung->imei; // ERROR | Private property so we can't access outside the class and throws: Fatal error: Uncaught Error: Cannot access private property Mobile::$imei -echo "
"; -echo $blackberry->showIMEI(); // OK | Public method accessing a inherited protected method inside the class -echo "
"; -echo $blackberry->getInternalMemory(); // OK | Public method accessing a inherited protected method inside the class -echo "
"; -echo $blackberry->internalMemory; // Uncaught Error: Cannot access protected property Blackberry::$internalMemory -echo "
"; diff --git a/10-static.php b/10-static.php deleted file mode 100644 index 4e37e3c..0000000 --- a/10-static.php +++ /dev/null @@ -1,57 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - $this->imei = $imei; - echo "+ CREATED " . $this->name . " WITH " . $this->internalMemory . " INTERNAL MEMORY +
"; - } - - public function connectMobileInternet() - { - // we can call static methods without instantiating directly with class name and double colon - return $this->name . " : " . Internet::connectInternet(); - } -} - -// we can acces to static properties without instanciating the class -echo "
"; -$company = Internet::$company; - -echo $company; -echo "

"; - - -$samsung = new Mobile('Samsung s20', 'Exynos', 128, '000111222333'); -echo $samsung->connectMobileInternet(); diff --git a/11-const.php b/11-const.php deleted file mode 100644 index 4c250ab..0000000 --- a/11-const.php +++ /dev/null @@ -1,46 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - $this->imei = $imei; - echo "+ CREATED " . $this->name . " WITH " . $this->internalMemory . " INTERNAL MEMORY +
"; - } - - // We can access constants with just name - public function runMobileApp() - { - return $this->name . " RUNS " . APPNAME . " : " . Internet::connectInternet(); - } -} - -$samsung = new Mobile('Samsung s20', 'Exynos', 128, '000111222333'); -echo $samsung->runMobileApp(); diff --git a/12-abstract-classes.php b/12-abstract-classes.php deleted file mode 100644 index b1a9282..0000000 --- a/12-abstract-classes.php +++ /dev/null @@ -1,60 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - $this->imei = $imei; - echo "+ CREATED " . $this->name . " WITH " . $this->internalMemory . " INTERNAL MEMORY +
"; - } - - public function runMobileApp() - { - return $this->name . " RUNS " . APPNAME . " : " . Internet::connectInternet(); - } -} - -class Blackberry extends Mobile -{ - public $keyboard; - - public function __construct($name, $chipset, $internalMemory, $imei, $keyboard) - { - parent::__construct($name, $chipset, $internalMemory, $imei); - $this->keyboard = $keyboard; - } -} - -$blackberry = new BlackBerry('BlackBerry', 'ARM', 1, '99966688555', 'qwerty'); -echo $blackberry->runMobileApp(); - -// We cannot instantiate an abstract class by itself!! -$samsung = new Mobile('Samsung s20', 'Exynos', 128, '000111222333'); // Fatal error: Uncaught Error: Cannot instantiate abstract class Mobile \ No newline at end of file diff --git a/13-interfaces.php b/13-interfaces.php deleted file mode 100644 index 0058b06..0000000 --- a/13-interfaces.php +++ /dev/null @@ -1,73 +0,0 @@ -username = $username; - $this->paassword = $password; - - return "¡Loggin succesful with $this->username!\n"; - } - - public function saveData() - { - return "¡The user has successfully saved the information!\n"; - } - - public function logout() - { - $this->username = null; - $this->paassword = null; - - return "¡The user has successfully logged out the application!\n"; - } - - // We can add methods not present in the interface - public function exitApp() - { - echo "Clossing " . self::APPNAME . "..."; - } -} - -$app = new AssemblerApp(); - -echo $app->showSplashScreen(); -echo $app->login("XxProAssemblerxX", "123456"); -echo $app->saveData(); -echo $app->logout(); -echo $app->exitApp(); diff --git a/14-overriding.php b/14-overriding.php deleted file mode 100644 index a61c7ff..0000000 --- a/14-overriding.php +++ /dev/null @@ -1,50 +0,0 @@ -name = $name; - $this->internalMemory = $internalMemory; - } - - public function getName() - { - return $this->name; - } - - public function getInternalMemory() - { - return $this->internalMemory; - } -} - -// When you extend a class, the subclass inherits all of the public and protected methods from the parent class. -class iPhonePlus extends iPhone -{ - //Here we are overriding this method adding extra features that the previous "getName" doesn't have. - public function getName() - { - return "¡The name of this iPhone is $this->name!"; - } -} - -$iPhone = new iPhone("iPhone X", "64"); -echo $iPhone->getName() . "\n"; - -$iPhonePlus = new iPhonePlus("iPhone X Plus", "128"); -echo $iPhonePlus->getName(); diff --git a/15-overloading.php b/15-overloading.php deleted file mode 100644 index 391ea8a..0000000 --- a/15-overloading.php +++ /dev/null @@ -1,52 +0,0 @@ -dni = $dni; - $this->name = $name; - return "¡Login with short DNI!"; - } - - public function loginFullDNI(string $dni) - { - $this->dni = $dni; - return "¡Login with full DNI!"; - } -} - -$app = new App(); -echo $app->login(53123456, "Pau") . "\n"; -echo $app->login("53123456K"); diff --git a/16-namespaces.php b/16-namespaces.php deleted file mode 100644 index fe5f942..0000000 --- a/16-namespaces.php +++ /dev/null @@ -1,116 +0,0 @@ -name = $name; - $this->chipset = $chipset; - $this->internalMemory = $internalMemory; - $this->imei = $imei; - echo "+ CREATED " . $this->name . " WITH " . $this->internalMemory . " INTERNAL MEMORY +
"; - } - - public function runAssemblerApp() - { - echo "
"; - AssemblerApp::showSplashScreen(); - echo "
"; - AssemblerApp::getData(); - AssemblerApp::showData(); - echo "
"; - AssemblerApp::exitApp(); - } - - public function runAssemblerAppLib() - { - // We use the namespace for calling our library methods - Lib\AssemblerApp::showSplashScreen(); - echo "
"; - Lib\AssemblerApp::getData(); - Lib\AssemblerApp::showData(); - echo "
"; - Lib\AssemblerApp::exitApp(); - } -} - -class Blackberry extends Mobile -{ - public $keyboard; - - public function __construct($name, $chipset, $internalMemory, $imei, $keyboard) - { - parent::__construct($name, $chipset, $internalMemory, $imei); - $this->keyboard = $keyboard; - } -} - -$blackberry = new BlackBerry('BlackBerry', 'ARM', 1, '99966688555', 'qwerty'); -echo $blackberry->runAssemblerApp(); -echo "

"; -echo $blackberry->runAssemblerAppLib(); diff --git a/InterfaceUser.php b/InterfaceUser.php new file mode 100644 index 0000000..9ee572e --- /dev/null +++ b/InterfaceUser.php @@ -0,0 +1,9 @@ +role = $role; + $this->country = "Private Country"; + } + + public function getRole() + { + return $this->role; + } + + public function getName() + { + return "Name: " . role::getName(); + } + + public function getCountry() + { + return $this->country; + } + + public function __destruct() + { + echo "

DESTR:
", role::getName(); + } + } \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..e9e75b9 --- /dev/null +++ b/index.php @@ -0,0 +1,16 @@ +getName()."
"; + echo "Last Name: ".$Ynohe->getLastName()."
"; + echo "Age: ".$Ynohe->getAge()."
"; + echo $Ynohe->getInfo()."
"; + + $Berta = new Admin("Berta", "Garcia", 29, "Spain", "Female", 65054321, "Admin"); + echo $Berta->getName()."
"; + echo "Last Name: ".$Berta->getLastName()."
"; + echo "Age: ".$Berta->getAge()."
"; + echo "Country: ".$Berta->getCountry()."
"; + echo "Role: ".$Berta->getRole()."
"; \ No newline at end of file diff --git a/mobileLibs.php b/mobileLibs.php deleted file mode 100644 index 3b4fa8f..0000000 --- a/mobileLibs.php +++ /dev/null @@ -1,51 +0,0 @@ -country = $country; + $this->gender = $gender; + $this->postCode = $post; + } + + public function getInfo() + { + return $this->country."
".$this->gender."
".$this->post; + } + + public function getName() + { + return $this->name; + } + + + public function getLastName() + { + return $this->lastName; + } + + public function getAge() + { + return $this->age; + } + + } \ No newline at end of file diff --git a/user.php b/user.php new file mode 100644 index 0000000..0278b62 --- /dev/null +++ b/user.php @@ -0,0 +1,25 @@ +name = $name; + $this->lastName = $lastName; + $this->age = $age; + } + + abstract public function getName(); + + abstract public function getLastName(); + + abstract public function getAge(); + + } +?> \ No newline at end of file