class zonder public method?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in de regio van Bergen op Zoom ben je als PHP Developer niet alleen gefocust op het ontwikkelen van Software. Daarnaast ben je ook voortdurend bezig met het zoeken naar nieuwe mogelijkheden en innovaties die essentieel kunnen zijn voor de efficiëntie van software ontwikkeling. Je deelt veel kennis en informatie met het team en ontvangt deze dan ook graag terug. Techstack: PHP, Symfony & mySQL. Bedrijfsprofiel Deze uitdagende opdrachtgever is ruim 20 jaar actief in de regio Bergen op Zoom. Het vooruitstrevende team staat de hele dag voor je klaar om je te helpen en ondersteunen.

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Front End Ontwikkelaar (React)

In het kort Als front end developer ga je aan de slag met maatwerkprojecten voor onze klanten. Denk bijvoorbeeld aan het toevoegen van een machine aan een database of het corrigeren van formulieren voor ingestuurde orders. Voorbeeld van zo’n project is Smart Link. De projecten waar je op ingezet kunt worden liggen binnen het technische domein waar jij als front end developer een grote rol speelt om samen met je back end collega’s de juiste oplossingen te leveren. please note that this particular role requires fluent Dutch language skills. Dit vind je leuk om te doen Het omzetten van designs

Bekijk vacature »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

Full stack 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 »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Medior front-end developer gezocht (€3.300 -

Functie Wat ga je doen? Jij als front-end developer gaat werken binnen de teams van/voor onze klant. Je werkt in een team met starters en ervaren ontwikkelaars met allemaal 1 overeenkomst; passie voor het vak. Maak je een fout? Geen probleem, leer ervan en ga dan weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en jezelf dus snel ontwikkelen. Wat hebben we jou te bieden? • Uitdagende projecten bij mooie klanten (bij jou in de buurt, of binnenkort intern vanuit ons kantoor!) • Een jonge organisatie met talentvolle collega’s • Veel ruimte voor

Bekijk vacature »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

SAP Integratie Ontwikkelaar

Ben jij ambitieus in de verdere ontwikkeling van SAP binnen HANOS, en heb je kennis van SAP PI, CPI (SAP integration suite) en of andere middleware tooling? Dan ben jij mogelijk onze nieuwe SAP Integratie (middleware) Ontwikkelaar! Lees snel verder en solliciteer! Wat ga je doen? Als SAP Financieel Consultant ben je, als deel van een gedreven team van interne SAP consultants, de schakel tussen de gebruikersorganisatie en ICT. Je draagt proactief bij aan een optimale aansluiting van de SAP-functionaliteit (een applicatielandschap met o.a. Suite on HANA, Fiori, Hybris, C4C en BO), op de bedrijfsprocessen. Verder ondersteun je de HANOS

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 »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Full stack 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 »

Pagina: « vorige 1 2 3 volgende »

Ward van der Put
Moderator

Ward van der Put

11/11/2013 15:37:43
Quote Anchor link
Ozzie PHP op 11/11/2013 14:48:45:
>> registreer rechtstreeks één autoload-functie (in plaats van een klasse);

Maar waar laat je die dan? Zet je die functie in je bootstrap?

Je moet ergens beginnen met een require die de pijlen richt op het Ozzie-framework. Of je dat nu de "configuratie", een "bootstrap", de "kernel" of een "environment-class" noemt, is eigenlijk lood om oud ijzer. En ja, die termen worden allemaal gebruikt, consistentie is wat dat betreft ver te zoeken.

Maar verder doet het er ook niet zoveel toe: nadat we het Ozzie-framework hebben opgestart, willen we dat het begrijpt hoe het Ozzie-dingen in de Ozzie-namespace geregeld zijn. Daar hoort een autoloader wat mij betreft bij.
Ozzie PHP op 11/11/2013 14:48:45:
>> prepend de autoload-functie (zodat deze als eerste aan de beurt is en niet — je zal ze ertussen hebben zitten — een autoloader die een directoryscan gebruikt).

Wat bedoel je precies met prepend? Ik heb maar 1 autoloader.

Dat hangt van de serverconfiguratie af, want autoloaders worden gestapeld. Daarnaast hangt het af van wat je aan software van derden gebruikt, want die registreren vaak hun eigen autoloader. Als de eerste autoloader een klasse niet kan vinden, wordt de volgende ingeschakeld. Daarom wil je met prepend de eerste zijn.
Ozzie PHP op 11/11/2013 14:48:45:
Maar waarom niet in een class? Dat zal qua performance toch niks uitmaken?

Waarom een object aanmaken dat verder niet wordt gebruikt? Je hebt dan in feite twee instanties van hetzelfde: de autoload-klasse plus de door die autoload-klasse geregistreerde autoload-functie. Als je die klasse enkel en alleen gebruikt om de autoload-functie te registreren, kun je beter de functie rechtstreeks registeren.

Wat hier niet helpt, is dat PHP geen elegante Singleton kent. Van de autoloader voor je complete framework heb je maar één instantie nodig. Meerdere keren dezelfde autoloader instantiëren heeft geen zin, maar een new Autoloader() kan te makkelijk worden herhaald. Je zult daarom, linksom of rechtsom, moeten regelen dat die autoloader maar één keer wordt geladen.
Gewijzigd op 11/11/2013 15:39:50 door Ward van der Put
 
PHP hulp

PHP hulp

27/11/2024 21:15:28
 
Ozzie PHP

Ozzie PHP

11/11/2013 15:50:08
Quote Anchor link
>> Als je die klasse enkel en alleen gebruikt om de autoload-functie te registreren, kun je beter de functie rechtstreeks registeren.

De class bevat dus ook de aut0load functie zelf voor het Ozzie framework.

>> Meerdere keren dezelfde autoloader instantiëren heeft geen zin, maar een new Autoloader() kan te makkelijk worden herhaald.

Ik snap je punt, maar dan moet ik de complete autoloader dus in m'n bootstrap gooien, en dan maakt ie geen onderdeel meer uit van de library. Dat vind ik eigenlijk wel jammer. Maar ik snap wel wat je bedoelt. Ik ga er nog ff over nadenken...
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 16:02:46
Quote Anchor link
Een simpele work-around is een globale constante definiëren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Autoloader
{
    public function __construct()
    {

        if (!defined('OZZIE_AUTOLOADER_REGISTERED')) {
            $this->register();
            define('OZZIE_AUTOLOADER_REGISTERED', true);
        }
    }
}

?>

Dat heeft zowel voor- als nadelen. Zodra de constante !defined() is of ongelijk aan true is, weet je dat de autoloader niet geladen is. Maar-maar-maar: je roept daarmee buiten de klasse een globale constante in het leven. En die kan dus bijvoorbeeld buiten die klasse worden gezet. Of toevallig al bestaan, mocht iemand toevallig net dezelfde constantennaam gebruiken...
 
Ozzie PHP

Ozzie PHP

11/11/2013 16:12:33
Quote Anchor link
Hmmm, tja, lastig inderdaad... het alternatief is een singleton.

Overige opties... register functie toch public maken en handmatig aanroepen. Ik ga ervan uit dat niet zomaar iemand 'm dan aanroept.

Van de andere kant... het is de autoloader die bij het framework zelf hoort. Waarom zou iemand die zomaar aanroepen?

Wat vind jij nou overigens van de vraag of een class dan "zelfregulerend" mag zijn?

Ik verwijs weer even naar mijn eerdere voorbeeld: http://www.phphulp.nl/php/forum/topic/class-zonder-public-method/92895/1/#665442

Als een class iets configureert, moet je dan zelf de configure() method aanroepen, of dit door de constructor laten doen? Als je het de constructor laat doen, zie je niet direct dat er iets gebeurt. Van de andere kant, als je toch altijd die functie moet aanroepen, waarom zou je het dan handmatig doen? Je wil in feite alleen maar de geconfigureerde gegevens opvragen. Toch?
 
Dos Moonen

Dos Moonen

11/11/2013 16:39:44
Quote Anchor link
@Ward, je kunt constanten ook in namespaces zetten.

Even voor de duidelijkheid.
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
<?php
// code...

// Doe dit a.u.b. nooit

new Autoloader;

// dit is prima zolang je $autoloader nog ergens gebruikt
$autoloader = new Autoloader;

// ook prima zolang de functie/method er iets mee doet
Static::method(new Autoloader);
function(new
Autoloader);

// code
?>


Quote:
Ik snap je punt, maar dan moet ik de complete autoloader dus in m'n bootstrap gooien, en dan maakt ie geen onderdeel meer uit van de library.

Wat doe jij precies in je Autoload classe? Dit is nogal onduidelijk.
Is het iets zoals http://kohanaframework.org/3.3/guide-api/Kohana#init ?

Als je ALTIJD een method aan moet roepen voor het object bruikbaar is, refactor het dan zodat het deel is van de constructor.
Of de Autoloader::configure() method na het refactoren nog bestaat hangt er van af of Autoloader::configure() method later ook nog nuttig aangeroepen zou kunnen worden. Mogelijk knip en plak je dus alle code van Autoloader::configure() naar Autoloader::__construct() en verwijder je Autoloader::configure().
Gewijzigd op 11/11/2013 16:40:37 door Dos Moonen
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 16:51:22
Quote Anchor link
Dos Moonen op 11/11/2013 16:39:44:
@Ward, je kunt constanten ook in namespaces zetten.

Ja, dat weet ik, maar Ozzie wil geen namespaces gebruiken...
 
Ozzie PHP

Ozzie PHP

11/11/2013 17:00:28
Quote Anchor link
@Dos, thanks voor je uitgebreide reactie, alleen dat configure verhaal was even op zichzelf-staand, dus los van de autoloader class.

Over de autoloader class:
In die class set ik in de constructor 2 paden. Vervolgens heb ik een autoload-method die de class-files requiret (op basis van de class-naam) en vanuit de constructor roep ik een functie aan die die method registreert (kan ook rechtstreeks vanuit de constructor maar ik vind dit wat duidelijker). Heel schematisch:

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
<?php
class Autoloader {

  private $pad1;
  private $pad2;

  public function __construct() {
    // set $pad1;
    // set $pad2;

    $this->register();
  }


  private function autoload($class) {
    // laad een class file
    // afhankelijk van de "hoofd"-namespace gebruik je pad 1 of 2

  }

  private function register() {
    // register the autoload functie
  }
}

?>

Dit is wel ff heel kort door de bocht, maar dan heb je een idee.

Dan wat betreft die configurator vraag... heeft dus niks met de autoloader te maken... stel ergens in je applicatie heb je data, bijvoorbeeld een array $foo. En die array $foo moet op de een of andere manier geconfigureerd worden. Dit doe je met behulp van de (fictieve) class FooConfigurator. Deze class is dus bedoeld om $foo te configureren. Nu is mijn vraag, voordat je de geconfigureerde gegevens kunt opvragen aan deze class, moeten ze natuurlijk eerst geconfigureerd worden. Laat je dat door de constructor doen, of doe je dat zelf door handmatig de configure() method aan te roepen. Als je het handmatig aanroept, zie je in de code beter wat er gebeurt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$fc
= new FooConfigurator($foo);
$fc->configure(); // hé, er wordt geconfigureerd!
$foo_new = $fc->get();
?>

Als de constructor in de class zelf de configure method aanroept, dan zie je minder goed dat er wordt geconfigureerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$fc
= new FooConfigurator($foo);
// nu zie je niet zo goed dat er wordt geconfigureerd!
$foo_new = $fc->get();
?>

Toch lijkt me de laatste optie beter. Wat is jullie mening?

>> Ja, dat weet ik, maar Ozzie wil geen namespaces gebruiken...

Jawel! Tegenwoordig ben ik ook aan de namespaces :)

Maar het zou wel fijn zijn als jullie even uitleggen wat jullie met die opmerking over constanten en namespaces bedoelen... :-/
Gewijzigd op 11/11/2013 17:02:56 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 17:07:44
Quote Anchor link
Waarom moet het dan $pad1 of $pad2 zijn voor twee namespaces? Waarom twee namespaces? En waarom niet één namespace? Of meer dan twee namespaces?

Dat is precies wat Wouter bedoelde met een autoloader die namespaces ondersteunt.
 
Wouter J

Wouter J

11/11/2013 17:14:28
Quote Anchor link
Je gaat toch hopelijk niet de paden in de klasse instellen ozzie, maar erbuiten?
 
Ozzie PHP

Ozzie PHP

11/11/2013 17:17:07
Quote Anchor link
Ja, snap ik... maar in m'n eigen Ozzie framework heb ik die 2 nodig. Als ik een library van derden ga gebruiken, dan gebruik ik hun autoloader.

Toevoeging op 11/11/2013 17:19:21:

Misschien moet ik het nog duidelijker maken. Dit is een autoloader die alleen voor OzzieFramework werkt. Het is niet bedoeld voor libraries van derden.
 
Wouter J

Wouter J

11/11/2013 17:31:27
Quote Anchor link
En alsnog moet je die autoloader niet binnen de klasse gaan configureren. Je wilt die autoloader namelijk ook gebruiken voor andere projecten en ook als jij je directory structure gaat veranderen moet je niet de klasse hoeven veranderen, maar alleen hoe je de klasse aanroept.

Als je dit soort dingen gaat opslaan in een klasse heb je echt OO nog niet begrepen en moet je ophouden met deze OO vragen te stellen. Ga dan eerst een maandje OO leren, zonder aan code of aan je framework te denken. Anders wordt het echt niks.
Gewijzigd op 11/11/2013 17:31:38 door Wouter J
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 17:31:39
Quote Anchor link
Ozzie PHP op 11/11/2013 17:17:07:
Ja, snap ik... maar in m'n eigen Ozzie framework heb ik die 2 nodig. Als ik een library van derden ga gebruiken, dan gebruik ik hun autoloader.

Zo te zien heb je een soort master met meerdere slaves. Als dat inderdaad zo is, zou ik pad1 én pad2 doorgeven aan de autoloader, niet pad1 óf pad2.
 
Ozzie PHP

Ozzie PHP

11/11/2013 17:36:41
Quote Anchor link
>> Je wilt die autoloader namelijk ook gebruiken voor andere projecten en ook als jij je directory structure gaat veranderen moet je niet de klasse hoeven veranderen, maar alleen hoe je de klasse aanroept.

Dat was nu dus niet de insteek. Wat betreft doorgeven van paden heb je gelijk. Zal ik nog even aanpassen. Maar ik heb dus een specifieke autoloader die alleen voor het Ozzie framework is bedoeld. Eigenlijk hoort ie dus ook niet in de library thuis.

>> Zo te zien heb je een soort master met meerdere slaves. Als dat inderdaad zo is, zou ik pad1 én pad2 doorgeven aan de autoloader, niet pad1 óf pad2.

Hij heeft ook alle 2 de paden...

Kun je nog even reageren op de FooConfigurator vraag? Dan laten we de autoloader even rusten. Ik moet even kijken wat ik daarmee ga doen.
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 17:51:52
Quote Anchor link
Ozzie PHP op 11/11/2013 17:36:41:
Kun je nog even reageren op de FooConfigurator vraag? Dan laten we de autoloader even rusten. Ik moet even kijken wat ik daarmee ga doen.

Die "configurator" zal "iets" moeten "configureren", nietwaar? Naar alle waarschijnlijkheid is dat "iets" nog een "configuratie" ook. Lijkt me wel logisch.

Maar wees dan concreet. Is de configuratie één bestand? Is de configuratie één instelling? Of zijn het meerdere instellingen, bijvoorbeeld in een array? Of kan alles?

Wat Dos eigenlijk ook al zei: maak zulke keuzen expliciet in plaats van impliciet of "implied". Kies! En kies daarna door!
 
Ozzie PHP

Ozzie PHP

11/11/2013 18:03:09
Quote Anchor link
Ward, het maakt niet zozeer uit op welke manier er iets geconfigureerd moest worden. Dit is puur een voorbeeld. Ik snap het niet... eerst zeg je dat ik het via de constructor moet doen, en nu moet ik het weer expliciet doen?

Dit was gewoon een simpel voorbeeld. Je hebt een of andere data $foo. Daar moet iets mee gebeuren. Wat er mee moet gebeuren maakt niet uit, maar het is altijd hetzelfde. Weet je wat? Laten we zeggen dat $foo een taart is en dat de class die taart in stukken moet snijden. Dat is het enige wat die class doet. Nu is de vraag, geef jij zelf de opdracht om die taart in stukken te snijden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$taart_snijder
= new TaartSnijder($taart);
$taart_snijder->snijTaart();
$gesneden_taart = $taart_snijder->get();
?>

... of laat je de constructor de opdracht tot snijden geven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$taart_snijder
  = new TaartSnijder($taart);
$gesneden_taart = $taart_snijder->get();
?>

De taart moet altijd 1x gesneden worden. Wie geeft de opdracht. Jijzelf of de constructor?
Gewijzigd op 11/11/2013 18:05:10 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 18:12:12
Quote Anchor link
Ozzie, je vereenvoudigt vrijwel elke algemene vraag tot een specifiek voorbeeld.

Vervolgens verklaar je het specifieke antwoord op die specifieke vraag tot een algemeen geldend antwoord op de algemene vraag.

Zo werkt het niet, hè. Niet in wetenschapsfilosofie. En meer praktisch ook niet in PHP.
Gewijzigd op 11/11/2013 18:13:23 door Ward van der Put
 
Ozzie PHP

Ozzie PHP

11/11/2013 18:17:11
Quote Anchor link
Ik weet niet hoe ik de vraag anders moet stellen Ward.

Een class moet 1 sepcifieke handeling uitvoeren. Deze specifieke handeling, geef je daar zelf opdracht toe, of zorg je dat de constructor dat doet?

Zo, algemener kan ik mijn vraag niet stellen :)
 
Wouter J

Wouter J

11/11/2013 19:07:07
Quote Anchor link
> Dat was nu dus niet de insteek. Wat betreft doorgeven van paden heb je gelijk. Zal ik nog even aanpassen. Maar ik heb dus een specifieke autoloader die alleen voor het Ozzie framework is bedoeld. Eigenlijk hoort ie dus ook niet in de library thuis.

Waarom zou die klasse niet door andere projecten gebruikt mogen worden? OO draait om hergebruik, niks anders.
 
Dos Moonen

Dos Moonen

11/11/2013 20:44:18
Quote Anchor link
Het idee van een class zonder public methods zodat andere code het zogenaamd niet uit kan voeren is een beetje paranoïde.
1) Waarom zouden libraries die jij kiest ooit jouw Autoloader class gebruiken?
2) Met de reflection API is het alsnog mogelijk.

In het geval van de versimpelde Autoloader is de register() method overbodig en kan je spl_autoload_register() gewoon in de constructor gebruiken.
Zonder reflection kan je zo goed als niets met dat Autoloader object. Wat me terug brengt op de vraag die ik eerder stelde.

Wat is [dan] je reden om een object aan te maken? Maak er twee static methods van zodat Autoloader een static helper class wordt. Ik zie namelijk geen enkele reden waarom je een object zou willen.


Ik verwacht dat constructors een bruikbaar object kunnen afleveren. Als ik niet genoeg parameters mee geef aan de constructor om een bruikbaar object af te leveren dan wil ik blijkbaar geen bruikbaar object. Daar hoor ik dan mijn redenen voor te hebben. Ik kan het object bijvoorbeeld als parameter doorgeven aan iets dat het verder initialiseert via setters.
 
Ozzie PHP

Ozzie PHP

11/11/2013 20:52:33
Quote Anchor link
>> Maak er twee static methods van zodat Autoloader een static helper class wordt.

Ik snap niet helemaal wat je bedoelt. Om welke 2 methods gaat het dan, en waar laat je die? Kun je misschien een heel simpel (schematisch) voorbeeldje geven?

>> Ik verwacht dat constructors een bruikbaar object kunnen afleveren. Als ik niet genoeg parameters mee geef aan de constructor om een bruikbaar object af te leveren dan wil ik blijkbaar geen bruikbaar object.

Oké... maar iemand anders op het forum zegt dat wanneer je een object aanmaakt het altijd zo goed als gebruiksklaar moet zijn. Anders heb je alleen maar een soort "omhulsel". En dat is dus lastig. De een zegt dit, de ander dat.
 

Pagina: « vorige 1 2 3 volgende »



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.