Abstract methodes door laten erven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Lead C++ Developer

De rol van Lead C++ Developer Als Lead C++ developer bij KUBUS word je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de desktop applicaties van BIMcollab, ons platform voor 3D model-validatie en issue-management bedoeld om de kwaliteit van 3D design-modellen voor gebouwen te verbeteren. Betere 3D modellen leiden tot betere gebouwen, dus zo draag je bij aan verduurzaming van de gebouwde omgeving met slimmer gebruik van materialen, minder verspilling en energie-efficiënte gebouwen. Een goede gebruikerservaring staat bij ons hoog in het vaandel; we gaan in onze ontwikkeling voor innovatie en kwaliteit. In je rol als

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Back-end .NET Developer

Functie omschrijving C# / .NET Developer gezocht voor een dynamische organisatie in de regio Houten! Voor een leuke organisatie in de regio Houten zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. In deze functie werk jij aan verschillende projecten en ga je vaak bij klanten op bezoek. Binnen deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid treffen. Bedrijfsprofiel Waar ga je werken? Het bedrijf waar je gaat werken is gespecialiseerd in het ontwerpen en implementeren van procesautomatisering en procesinformatisering. Zij doen dit onder andere voor de (petro)chemie, pharma, infra,

Bekijk vacature »

.NET developer

Functie Als .NET developer werk jij samen in een multidisciplinair ontwikkel team met 1-2 Senior .NET developers, twee front-end developers, Data Scientists en één UX designer. Als team werken jullie aan het ontwikkelen van een Cloud based applicatie en aan het stabieler maken van deze applicatie. Ook unit testing gaat erg belangrijk worden in jouw nieuwe functie. Samen met de Senior .NET ontwikkelaar wordt jij verantwoordelijk voor het ontwikkelen van de API. Jullie werken met veel data en incidenteel komen er ook data vraagstukken en zullen er wat queries gedraaid moeten worden. Dit betekend dat jij veel gaat werken met

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

Ervaren Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als ervaren developer zul je hiernaast ook andere developers assisteren en waar nodig de leiding nemen in het project.

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Consultant Low Code Developer

Functie omschrijving Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Voor een mooie opdrachtgever in omgeving Delft zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten. Onderdelen functie Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan Mendix of Betty Blocks. Je bent verantwoordelijk voor

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer begint jouw dag na een bak koffie met een stand up. De vorderingen worden tijdens de stand up besproken en de doelen worden opgesteld waar jullie als team in de volgende sprint naartoe gaan werken. Onze backend is geschreven in .NET Core en onze Front-end in Angular. Bij ons ga jij dan ook Fullstack aan de slag. Jij wordt hier opgeleid om zelfstandig te kunnen programmeren en applicaties te kunnen implementeren. Er wordt op projectbasis gewerkt, dit bied leuke uitdagingen omdat elke klant een andere visie heeft over de applicatie die wij maken. Je gaat

Bekijk vacature »

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Rotterdam! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »
Johan K

Johan K

19/05/2010 09:43:16
Quote Anchor link
Ik heb een vraagje over het door laten erven van methodes in classes, en hoe ik dit eventueel mogelijk zou kunnen maken. Ik heb hier een paar dagen een topic voor geopend, er was alleen niet op gereageerd en nu is de context iets anders. Dus vandaag maar een nieuwe topic.

Dit is een voorbeeld van een classe hierarchy dat ik wil berijken.
Ik weet alleen niet of dit "professioneel" mogelijk is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

abstract class Connection{
    abstract function error();
}


class FTP extends Connection{
    private $pError;

    function
error(){
        return $pError;
    }
}


interface iDatabase{
    function
query( $sql );
    // en nog een hele waslijst met standaard methodes.
}

abstract class Database extends Connection{
    abstract function error(); // Here, it shall error. Function must contain body, Noooh!
}

class MySQL extends Database implements iDatabase{
    function
error(){
        return mysql_error();
    }
    function
query( $sql ){
        return mysql_query( $sql );
    }
}


class MySQLi extends Database implements iDatabase{
    function
error(){
        return mysqli_error();
    }
    function
query( $sql ){
        return mysqli_query( $sql );
    }
}


class PostGreSQL extends Database implements iData //... etc

?>


Dit is alleen niet mogelijk omdat "Database" een body verwacht op de methode error.
Is er een mogelijkheid om dit wel te laten werken, zonder daarvoor nog een andere methode te maken en door te linken zoals "getError()",

Door personelijke onstandigheden heb ik momenteel thuis geen Internet, ik heb alleen de mogelijkheid om dit op een andere locatie te doen, dus verwacht niet per direct antwoord.

Alvast bedankt.
Gewijzigd op 19/05/2010 10:24:12 door Johan K
 
PHP hulp

PHP hulp

27/12/2024 01:49:05
 
Jelmer -

Jelmer -

19/05/2010 10:10:56
Quote Anchor link
Mijn PHP (5.3.nogwat) geeft een iets duidelijkere foutmelding: PHP Fatal error: Can't inherit abstract function Connection::error() (previously declared abstract in Database). En inderdaad, wanneer ik Connection::error weglaat dan gaat het goed. Die eis dat alle classes die Database extenden een method genaamd error() moeten hebben zit al in Connection. En die eis kan je niet overschrijven.
 
Johan K

Johan K

19/05/2010 10:22:31
Quote Anchor link
Ik heb een van de nieuwste PHP versies, 6.0.#, stom dat ik dat er niet had bij vermeld.
Grappig dat je dit ook even heb uitgetest, heb deze code met de losse hand geschreven. Had wel een syntax errortje verwacht.

Ik begrijp deze error wel, ik moet een body "{}" op de error methode in classe Database declareren, maar dan kan de methode niet overschreven worden, toch? Ik had namelijk wel iets gelezen over de final keyword.
Ik begin de laatste tijd echt in te zien hoe handig het verlengen van een classe is, dus ik weet er nog niet alle "tricks".

En bedankt voor je snelle reactie, ik ga het thuis even proberen want ik had niet verwacht dat hij geen error zou geven als hij gedeclareerd is in de kinderen van Database.

Misschien nog iets, bestond of bestaat er nog ergens een optie in PHP zoiets als "required"?
Dus dat deze classes eventueel worden geladen standaard met __autoload, voordat ze daadwerkelijk gebruikt worden.
Zou handig zijn voor error handeling classes, met set_*_handler(array( 'class', 'static method' ) );

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php class FooBar requires Foo, Bar extends MehBar implements iBar{} ?>
Gewijzigd op 19/05/2010 10:38:53 door Johan K
 
Jelmer -

Jelmer -

19/05/2010 10:37:15
Quote Anchor link
Database extends Connection, en daarmee erft hij ook de eisen van Connection, namelijk dat er een method error() moet zijn. Normaal gesproken moet de class Database daaraan voldoen, maar Database is ook abstract. PHP weet dan dat Database nooit een instantie kan worden, en daarom hoeft het niet direct alle eisen van Connection waar te maken. Alleen een class die daadwerkelijk een instantie kan worden, de uiteindelijke classes zoals PgSQL, moeten dus voldoen aan alle eisen van de bovenliggende classes in die hiërarchie.

Als Database abstract is, hoef je de method niet te voorzien van een body. (mits je er het abstract keyword voor zet) Maar een class die Database extends, PgSQL bijv, en die niet abstract is, moet wel aan alle eisen voldoen. En die moet dus wel een method error met een body hebben.

PS: Gebruik je PHP 6, of gewoon de laatste build van PHP's trunk? Want PHP 6 zelf is op het moment niet in ontwikkeling. Volgens mij is de trunk tegenwoordig weer gebaseerd op PHP 5.3.
 
Johan K

Johan K

19/05/2010 10:44:16
Quote Anchor link
Heel erg bedankt voor de verduidelijking, helpt erg.
En persoonlijk weet ik niet precies wat voor build het is, thuis heb ik geen Internet, dus ik had aan een vriend van mij gevraagd of hij het even op een jumpdrive kon zetten, en simpelweg gewoon geinstalleerd. Hij zei dat het versie 6 was, dus daarop vertrouwde ik op.

Ik zal wel voor je kijken, maar daar kan ik vandaag geen antwoord op geven.
Gewijzigd op 19/05/2010 10:47:48 door Johan K
 
Willem Jan Z

Willem Jan Z

19/05/2010 10:53:45
Quote Anchor link
Enkel ter informatie:
Op dit moment is er nog geen beslissing gemaakt over de volgende versie van PHP. Het kan 5.4 zijn, 6.0 maar ook 7.0. Heeft onder andere te maken met Unicode support wat een beetje drama is geworden binnen het ontwikkelteam.
Waarschijnlijk heb je dus gewoon een snapshot van de trunk.

Deze informatie weet ik via de internals list van PHP. Heb dus niks met de ontwikkeling ervan te maken :)

Verder ontopic:
Je implement overal iDatabase, maar voor zover ik nu zie is het logischer om de abstracte class iDatabase te laten implementeren.

Over het 'final' keyword. Als je een class maakt, met een final method, kan je bij een extend van die class, die specifieke method niet overrulen. Je kan ook een complete class dus final maken, zodat van die class geen extend gemaakt kan worden,
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.