Entry point
public static void main(String[] args) {
}
en daar zet je dan je eerste code in die moet worden uitgevoerd. Maar hoe maak ik zoiets met PHP? Ik heb nu dus drie classes (ModelClass, ViewClass en ControllerClass). Nu wil ik eigenlijk dat het eerste dat wordt uitgevoerd een functie is die het beginscherm toont (toonBeginScherm()) uit de ViewClass. Maar hoe krijg ik dit gedaan zonder dat er een entrypoint is?
Hoop dat de vraag een beetje duidelijk is. THX.
Bedoel je een __construct()?
www.eensite.nl/index.php
en dan staat dit in index.php
Code (php)
dan werkt dit niet (net geprobeerd). Hoe zorg ik ervoor dat dat wel gebeurd. In java kon je dat dus voor mekaar krijgen met
public static void main(String[] args) {
}
maar in PHP geen idee, kan er ook niks over vinden.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
function __construct()
{
printHTML()
}
# Moet:
function __construct()
{
$this->printHTML();
}
?>
function __construct()
{
printHTML()
}
# Moet:
function __construct()
{
$this->printHTML();
}
?>
Bedoel je misschien dat je de functie moet aanroepen?
www.eenwebsite.com/index.php aanroept dat hij dan dan eigenlijk de functie printHTML(); uitvoert uit deze klasse (met de naam index.php)
Ik wil eigenlijk zodra iemand dus Je hebt geen main, het is geen programma.
Neem nou bijvoorbeeld cakephp, die hebben een front controller die de requests afhandelt door de url naar de dispatcher te sturen, die weer de juiste controller met parameters aanroept.
Dus als ik het goed begrijp zou ik een soort van extra php file moeten maken? Sry misschien voor mijn newbee vragen maar ik ben zo gewend aan java dat het lastig is voor mij om te begrijpen dat er geen entrypoint is :P
Ja, je kunt bijvoorbeeld dit doen in je index file.
Kohana bekijken, gewoon om de logica even te achterhalen.
ja, je moet dus eigenlijk een file maken die je url verkeer regelt. Dus een file die eerst je url analyseert en op basis daarvan je naar de juiste controller stuurt en daar dan de juiste method aanspreekt. Niet zo moeilijk, mss moet je eens een bestaand MVC framework zoals Gewijzigd op 28/07/2010 11:30:44 door Moe BE
Of je kan ook onderaan je class code gewoon new IndexClass(); zetten. Trouwens, het IS al een class, waarom zit dat woord dan nog eens in de klassenaam? Dit doe je toch in Java ook niet?
Heb mezelf dat gewoon altijd aangeleerd om het type file achter de klasse (of wat dan ook) te zetten. Kan geen kwaad, en vind het zelf duidelijk :P
Gewijzigd op 28/07/2010 11:48:25 door fio na
Als je duidelijke namen gebruikt hoef je niet bij te vermelden welk type het is.. bv. IndexController zegt genoeg toch?
$nieuwsitems en $titel en $totaalbedrag hoeven ook niet in hun benaming te hebben dat de eerste een array is de tweede een string en de derde een float of int?
Hipska BE op 28/07/2010 11:53:55:
ikzelf gebruik ook class.mooienaam.php maar zou die class dan nooit MooieNaamClass noemen, want dat is echt van de zotte..
Hoezo is dat van... de zotte? Is toch duidelijk. Er zijn meer mensen met wie ik samenwerk die ook het type achter de naam zetten (zoals MooieNaamClass). Heb alleen nog nooit met mensen samengewerkt die PHP gebruiken :P.
Maar zoals ik zei, iedereen benaamt dingen anders en ik vindt dit handig en de mensen met wie ik werk doen het ook (in java dan :P).
Ontopic:
Bedoel je zoiets?
in php is het gebruikelijk, om de klasse eerst te initialiseren. Je maakt een object variable aan, die de functies van de klasse overneemt.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
// initialiseren - __construct() wordt automatisch aangeroepen.
$start = new indexClass();
// en daarna op dit object een functie aanroepen.
$start->printHTML();
// en met het unsetten, of bij het eindigen van de pagina, wordt automatisch de __destruct() aangeroepen
?>
// initialiseren - __construct() wordt automatisch aangeroepen.
$start = new indexClass();
// en daarna op dit object een functie aanroepen.
$start->printHTML();
// en met het unsetten, of bij het eindigen van de pagina, wordt automatisch de __destruct() aangeroepen
?>
Gewijzigd op 28/07/2010 18:09:21 door Pieter van Linschoten
Pieter, hij wilt weten hoe zijn logica weet welke controller (c.q. class) geladen moet worden. Niet hoe een class geladen wordt :-).
Mijn probleem is al verholpen (door een index file te maken die dingen doet :P). Thx in ieder geval.
Het leukste is natuurlijk om te laten zien wat je daar doet. Dan heeft de volgende met dit probleem er ook wat aan.
Deze values worden aan Model gegeven die daar berekeningen op uitvoert en een soort van wrapper object teruggeeft aan controller (kon ook een array zijn, maar heb er een apart object van gemaakt omdat ik nog wat extra dingen van plan ben later). De controller stuurt dit object weer terug aan de view die de output genereerd.
Dus de oplossing was gewoon een aparte index.php maken die niks anders doet dan controller instantieren. In de rest van het programma wordt die index.php niet meer aangeroepen alleen de eerste keer.
Ben nu van plan om te kijken of ik een webservice kan bouwen zodat Model die kan gebruiken. Enige nadeel van webservice is het maken van WSDL. Heb nog geen echte generator gevonden en heb geen zin om dat zelf te schrijven want ik ben lui :P
Gewijzigd op 29/07/2010 14:04:15 door fio na
Heb je maar één controller :-/