Kleine cursus PHP5. Auteur: Raymond Moesker



Vergelijkbare documenten
Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Zelftest Programmeren in Java

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

IMP Uitwerking week 13

Modelleren en Programmeren

Java. Basissyllabus. Egon Pas

Object Oriented Programming

Introductie en even voorstellen

Overerving & Polymorfisme

Modelleren en Programmeren

Tentamen Imperatief Programmeren

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

VI. Klassen en objecten

Abstracte klassen & Interfaces

Ingebouwde klassen & methodes

Scala. Korte introductie. Sylvia Stuurman

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Dynamiek met VO-Script

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Programmeren in C# Interfaces. Hoofdstuk 23

Design patterns Startbijeenkomst

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

et Zend Framework bestaat volledig uit objectgeoriënteerde

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Programmeren in Java 3

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Modelleren en Programmeren

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

NAAM: Programmeren 1 Examen 21/01/2011

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Datastructuren Werkcollege Intro

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Ontwerp van Informatiesystemen

Modulewijzer Tirdat01

NAAM: Programmeren 1 Examen 29/08/2012

Objectgeoriënteerd programmeren in Java 1

Een stoomcursus door Edgar de Graaf, november 2006

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Vakgroep CW KAHO Sint-Lieven

Programmeren. Cursus Python

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

HvA Instituut voor Interactieve Media ActionScript 3.0

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Modelleren en Programmeren

Elementary Data Structures 3

Programmeren in Java 3

Zelftest Java concepten

Javascript oefenblad 1

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.


Datastructuren en algoritmen

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Programmeren in C++ (deel 1)

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Modelleren en Programmeren

Introductie in C++ Jan van Rijn. September 2013

TENTAMEN Programmeren 1

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Knowledgeable Referenceable Personable Accountable Scalable

Een fragment wordt afgeleid van de basis klasse "Fragment".

In een klassendiagram worden klassen beschreven in termen

Java Programma structuur

Analyse Programmeertalen

van C++ studiematriaal " diverse Java tutorials op WWW " Thinking in Java.

1 Ontwerppatronen. 1.1 Het Command patroon

Software 1. php mysql. bachelor grafische en digitale media cross-media ontwerp & grafimediatechnologie academiejaar semester 1

Java Generics: een introductie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

NHibernate als ORM oplossing

Programmeren (1) Examen NAAM:

Deel 1 : Gesloten Boek

Zelftest Inleiding Programmeren

Programmeren in Java 3

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Unit testen van EJB's. Koert Zeilstra - iprofs

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Stacks and queues. Hoofdstuk 6

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

VB Magazine Online /08 1 / 6

Objectgericht programmeren 1.

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Transcriptie:

Kleine cursus PHP5 Auteur: Raymond Moesker

Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven als IBM en Oracle en is daarom naar mijn mening een serieuze overweging waard als men moet kiezen tussen J2EE,.NET of PHP5. PHP (Hypertext Preprocessor) is een opensource taal met een C achtige syntax en kan alles wat CGI kan. Je kunt PHP ook embeddden in je HTML. PHP draait op alle platformen, is schaalbaar en eenvoudig te programmeren en te onderhouden. Met versie 5 van PHP wordt PHP een echt object georiënteerde taal. Een taal waarin het mogelijk is om klassen, (de)constructors, exception handling, type controle, public, private, protected, abstract en static methoden en attributen te gebruiken. Het is ook mogelijk om objecten te verplaatsen door middel van passing by refference. PHP wordt gecompileerd naar byte code tijdens de executie van de code, de byte code wordt na compilatie uitgevoerd door de Zend engine. PHP heeft een Garbage Collectior die het geheugen beheer doet. Het is met PHP overigens niet mogelijk om te erven van twee klassen(multiple inheritance) zoals in C++ wel mogelijk is. PHP5 heeft de volgende (object georiënteerde) eigenschappen Inheritance Referenties naar objecten Public, private en protected toegang tot methoden en attributen (information hiding) Final methoden en klassen Abstract methoden en klassen Static methoden en attributen Garbage Collector Constructors en Deconstrutors Interfaces Onderwerpen die ik zal beschrijven zijn: het opensource zijn van php referenties naar objecten passing by value mogelijkheden tot information hiding constructors en deconstructors interfaces final en abstract functies en klassen static funties exception handling php extensies maken met behulp van C

PHP open source In tegenstelling tot bijvoorbeeld Java en.net is PHP volledig opensource. Dit kan als je een voorstander bent van opensouce software een reden zijn om PHP te kiezen als ontwikkelomgeving. Een van de voordelen is dat je de code van PHP zelf kunt aanpassen en compileren. Object georiënteerde eigenschappen Inheritance Met PHP is het mogelijk om objecten te erven. Een object is te erven door het object te extenden. class Voorbeeld class Uitleg extends Voorbeeld Referenties naar objecten In tegenstelling tot PHP4 krijg je in PHP5 bij het kopiëren van een klasse een referentie naar die klasse. Wil je in PHP5 toch een kopie van een klasse dan kun je functie clone() aanroepen. Doordat PHP5 met referenties werkt, is het dus ook mogelijk om een object te verplaatsen door middel van 'passing by refference'. In PHP4 was alleen 'passing by value' mogelijk. Toegang tot methoden en attributen (information hiding) In PHP5 is het mogelijk de toegang tot methoden en attributen te reguleren. Het is mogelijk de methoden en attributen public, private en protected te maken. class Voorbeeld private $m_inummer = 10; public function geefnummer() return $this >m_inummer ;

Final methoden en klassen Het is mogelijk om methoden en klassen final te maken. Een final methode kan niet overschreven worden in een child klasse en een final klasse kan niet geërfd worden. final class Voorbeeld class Uitleg extends Voorbeeld Dit zal dus resulteren in een foutmelding. Abstract methoden en klassen Met PHP kun je klassen en methoden abstract maken. Wanneer een klasse abstract is, dan kan er alleen van deze klasse geërfd worden Het is niet mogelijk deze klasse te initialiseren. Als je in een klasse een methode abstract maakt, moet deze methode leeg zijn net als bij een Interface klasse en het is verplicht om de klasse abstract te maken. Een abstracte klasse kan dus zowel abstracte als niet abstracte methoden bevatten. De abstracte methoden zijn verplicht te implementeren in de klasse die erven van de abstracte klasse. voorbeeldcode: abstract class Voorbeeld abstract function geefnaam($p_snaam); public function printnummer($p_inummer) print $p_inummer ; abstract class Uitleg extends Voorbeeld public function geefnaam($p_snaam) print '<br>'.$p_snaam; Uitleg::printNummer(10); Geeft 10. Uitleg::geefNaam('Jan'); Geeft Jan;

Static methoden en attributen Static methoden kun je benaderen zonder een instantie te maken van Klasse. Static attributen worden ook wel attributen van de klasse genoemd, een soort globale attributen binnen een klasse. class Voorbeeld static $m_inummer = 10; static function printnummer() print self::$m_inummer; Voorbeeld::$m_iNummer++; print Voorbeeld::$m_iNummer Geeft 11. Merk op dat je het atttribuut benadert met twee dubbele punten ::. $l_objvoorbeeld = new Voorbeeld(); $l_objvoorbeeld >printnummer(); Geeft 11. Garbage Collector PHP5 heeft een Garbage Collector die het geheugen beheer doet.

Constructors en Deconstrutors Het is in PHP5 mogelijk om constructors aan te roepen tijdens het creëren van een klasse. De constructor heeft niet zoals gebruikelijk de naam van de klasse maar wordt gecreëerd met de voorgedefinieerde functie construct(). constructor functie: function construct() Het is in PHP5 ook mogelijk om een deconstructor aan te roepen. Meestal is het verstandiger om de deconstructie van een klasse aan de garbage collector over te laten. deconstructor functie: function deconstruct() Interfaces Het creëren van interfaces is ook mogelijk met PHP5. Het nut van interfaces is dat je de functionaliteit van een klasse vast kunt leggen. Je kunt er dus mee aangeven welke functies voor deze klasse beschikbaar zijn. interface Voorbeeld public function geefnaam($p_snaam); public function printnummer($p_inummer)); class Uitleg implements Voorbeeld public function geefnaam($p_snaam) print $p_snaam; public function printnummer($p_inummer) print $p_inummer ;

Exception handling Nieuw in PHP5 is exception handling in de vorm van de try throw catch methode. Het is alleen toegestaan om objecten te throwen die ge erfd zijn van de default Exception klasse. class MysqlException extends Exception//code class Connector try if(!$this >m_conconnection = mysql_connect($this >m_sservername, $this >m_susername, $this >m_sserverpassword)) throw new MysqlException("MysqlException: ".mysql_error()); else if(!mysql_select_db($this >m_sdatabasename)) throw new MysqlException("MysqlException: ".mysql_error()); catch (MysqlException $e) print $e >tostring(); return false; Arrays Leuk om te vermelden is dat arrays PHP eigenlijk hash tables zijn Het zoeken naar een waarde is dan ook van de orde O(1). Doordat er gebruikt gemaakt wordt van hash tables kun je zowel een integer als een string als key gebruiken. Wanneer je een string als key gebruikt, wordt het een associatieve array in PHP genoemd. Beheren van PHP extensies en PHP libraries PEAR(PHP Extension and Application Repository) is een package management tool voor PHP. Met deze tool is het mogelijk om de volgende soorten PHP Packages te beheren: PHP library code PHP extensies Met deze tool is het dus mogelijk om bestaande en nieuwe code te distribueren en te hergebruiken.

PHP extensies maken met behulp van C Een van de grote voordelen van het opensource zijn van PHP is dat het dus mogelijk is om zelf PHP extensies te schrijven. Dit is bijvoorbeeld handig om een database connector te schrijven voor een database die PHP niet ondersteunt. Je schrijft je eigen extensie in C, voegt hem toe aan de PHP tree en compileert de PHP code opnieuw. Je extensie is dan klaar voor gebruik en om natuurlijk te delen met de opensource gemeenschap. Dit is natuurlijk wel een te gemakkelijke voorstelling van de werkelijkheid, maar globaal komt het hier wel op neer. Een leuke tutorial over hoe je zelf een extensie kan schrijven in C staat in het boek: PHP5 Power Programming. PHP5 als Object georiënteerde taal PHP5 is een volwassen object georiënteerde taal gebleken en mag zich naar mijn mening met recht een object georiënteerde taal noemen. Ik ben persoonlijk geen ontwerpprincipes tegen gekomen die niet uit te voeren waren in PHP5. Het feit dat PHP geen strong typed language is zou voor sommigen een discussie punt kunnen zijn over het feit of PHP al dan niet een volwassen object georiënteerde taal is. Ik behoor tot de groep mensen die PHP wel een volwassen object georiënteerde taal vindt. Het feit dat het geen strong typed language language is vergt naar mijn menig meer netheid en kennis van de programmeur en het levert in sommige situaties de flexibiliteit in een taal die soms handig kan zijn. Handig wil niet altijd zeggen mooi. Het is in PHP overigens wel mogelijk te typecasten. public function nietmooi() if($l_bbool = true) else return eenstring ; return false; De vorige code is niet mooi maar kan wel handig zijn en het is aan de programmeur om te bepalen of hij op deze manier wil programmeren. In java had de functie of public boolean nietmooi() of public string nietmooi() geheten.