MVC Routing

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

iOS Developer

You will programming new and existing applications for iOS. You will work in scrum teams with developers, designers and researchers. You will contribute to the iOS Coding Guidelines. Sharing your programming skills with your colleagues in order to grow as a team. You will coach junior iOS Developers Functie-eisen Higher education or equivalent ability. 5+ years experience as an iOS Developer. Familiar with Objective-C and Swift Familiar with design guidelines of iOS. Good communication skills. Passionate in finding solutions You are a teamplayer If you are familiar with agile, that's nice too. Note: The agencies we work with are looking

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Jouw taken als Front End Developer bestaan uit: Het ontwikkelen van maatwerkoplossingen voor klanten; Het meedenken over nieuwe tools en technieken; Het begeleiden van junioren; Het meewerken aan diverse projecten; Het meedenken in UX/UI design. Hier ga je werken Als Front-End Developer ga je in een Scrum team aan de slag met de nieuwste digitale technologieën om klanten en overheden over de hele wereld te ondersteunen met het ondersteunen van hun software, veelal op het gebied van watermanagement en infra. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning

Bekijk vacature »

PHP Back-end Developer gezocht regio Utrecht

Bedrijfsomschrijving Voor dit bedrijf actief in de zorg gevestigd in Utrecht, ben ik op zoek naar een PHP Back-end Developer. Dit bedrijf met ongeveer 30 personen in dienst, streeft er naar om Nederlandse zorginstellingen en apothekers te voorzien van moderne medicatie voorschrijf- en bewaking systemen. Haar klanten zijn zeer divers, het zijn grote en kleine zorginstellingen. De afgelopen 15 jaar hebben zij succesvol bijgedragen aan de groei en modernisering in de zorg. Deze prachtige organisatie biedt je de mogelijkheid om je zelf door te ontwikkelen en je kennis en vaardigheden verder te verdiepen en te verbreden. Functieomschrijving We zoeken voor

Bekijk vacature »

Java-softwaredeveloper

Wat je gaat doen: Dit ga je doen Daar kunnen we heel kort over zijn: software ontwikkelen met de agile-/scrumteams van toonaangevende organisaties. Zoals ministeries, gemeentes, financiële instellingen en retail- en energiebedrijven. En als het bij je past, begeleid je collega-developers in het ontwikkelproces. Doordat je tijdelijk aan een opdracht werkt, doe je in korte tijd veel mooie ervaringen op en leer je nieuwe technieken en tools kennen. Je teamleden werken bijvoorbeeld met Spring, JPA/Hibernate, AJAX, REST/JSON, GIT, AWS en TDD. Het interessante is dat jij volledig in control bent en zelf kiest welke opdrachten je oppakt. Het soort rol,

Bekijk vacature »

Embedded Hardware Developer

Vacature: Embedded Hardware Developer in Aalsmeer. Ben jij die ervaren Hardware Developer die graag een bijdrage wil leveren aan de ontwikkeling van een duurzamere samenleving? Dan hebben wij een mooie functie voor jou! Voor onze opdrachtgever zijn wij op zoek naar een Embedded Hardware Developer in omgeving Schiphol. Wat ga je doen als Embedded Hardware Developer? Als Hardware Developer ga jij je bezighouden met het ontwikkelen van duurzame energieopslagsystemen voor hybride en volledig elektrisch aangedreven schepen. Jouw dagelijkse werkzaamheden zullen er zo uitzien: Je ontwikkelt ideeën en concepten ter verbetering van het systeem. Je designt schema’s en board layouts in

Bekijk vacature »

Medior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Medior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

Drupal Developer

Dit ga je doen Je houdt je bezig met content management door middel van Drupal; Je houdt je bezig met het ontwikkelen van applicaties, websites, portalen, samenwerkingsomgevingen etc, voor mooie maatschappelijk opdrachtgevers; Je bent werkzaam in zelfsturende teams, waardoor je ook de mogelijkheid hebt om wat meer leidinggevende taken uit te kunnen voeren; Hier ga je werken Deze organisatie is er een waar je bij wilt horen! Lijkt jou het gaaf om de ultieme vrijheid te krijgen op je werk en tegelijkertijd voor de mooiste maatschappelijke opdrachten bezig te zijn? Dan is deze vacature zeker iets voor jou. Als Drupal

Bekijk vacature »

Freelance senior ICT ontwikkelaar (zzp)

Belastingdienst B/cao Startdatum inzet: 9-1-2023 Einddatum inzet: 31-12-2023 Uren per week: 36,00 Standplaats: Apeldoorn Max tarief: € 86,00 Team LIV is op zoek naar een enthousiaste, flexibele, multitaskende en hands-on ontwikkelaar met veel ervaring in het gedeeltelijk of volledig zelfstandig bepalen van ontwikkel- en realisatie aanpak. Onze nieuwe collega moet in staat zijn te werken in een hectische omgeving waarbij er sprake is van zeer verschillen realisatietrajecten voor wat betreft(technische)diepgang, startmoment (wel/geen beschrijvingen beschikbaar) en klantcontact. De gekozen ontwikkelmethodiek dient passend te zijn voor het op te lossen vraagstuk waarbij samenwerking met de testengineer in relatie tot Systeem integratie test

Bekijk vacature »

Freelance applicatieontwikkelaar (zzp)

Belastingdienst B/cao Startdatum : 2-1-2023 Tijdelijke functie, met optie op vast Aantal uren per week : 36 Standplaats in overleg : Apeldoorn Applicatieontwikkelaar bij het Ministerie van Financiën- Belastingdienst We zoeken een consultant/developer met ervaring in de ontwikkeling van back-end systemen. Als consultant heb je kennis en ervaring met de wijze waarop Open Formulieren is opgezet. Je bent een vraagbaak voor collega’s en deelt waar nodig je kennis. Je hebt ervaring met het werken in een open source omgeving. Je bent thuis in verschillende frameworks of je kunt je die snel eigen maken. Je hebt aantoonbaar ruime kennis van en

Bekijk vacature »

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

Senior Java developer (backend)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Oracle Apex Developer

Dit ga je doen Jouw taken bestaan uit: Het bouwen maatwerk Oracle applicaties voor Europese business units; Het implementeren van de nieuwste technieken om te blijven innoveren; Actief meedenken en aandragen van verbetervoorstellen. Hier ga je werken Deze organisatie in de regio Veenendaal is een van wereld grootste retailers met ruim 16.000 winkels in 27 markten en jaarlijks ruim 5,3 miljard klanten die winkelen bij een van hun welbekende retailmerken. Binnen de organisatie is er een IT Group actief die dient als IT Service Provider voor de hele organisatie en waar dagelijks IT'ers werken aan state-of-the-art IT oplossingen. Dit doen

Bekijk vacature »

.Net Developer

Samengevat: Wij produceren software. Wil jij werken als Back-end Developer? Heb jij verstand van design patterns? Vaste baan: .Net Developer Microservice HBO WO Design Patterns 3.500 - 5.000 Backend Developer Deze werkgever is een sterke speler op de internationale markt van digital signage/narrowcasting software. Vanuit onze vestiging in Eindhoven werken we met de nieuwste technologieën aan out-of-the-box producten voor digital signage. Deze producten worden via ons wereldwijd partner netwerk bij talloze bedrijven en organisaties ingezet voor dynamische beeldscherm-communicatie. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor

Bekijk vacature »

Freelance senior ICT ontwikkelaar (zzp)

Belastingdienst B/cao Startdatum inzet: 9-1-2023 Einddatum inzet: 31-12-2023 Uren per week: 36,00 Standplaats: Apeldoorn Max tarief: € 86,00 Team LIV is op zoek naar een enthousiaste, flexibele, multitaskende en hands-on ontwikkelaar met veel ervaring in het gedeeltelijk of volledig zelfstandig bepalen van ontwikkel- en realisatie aanpak. Onze nieuwe collega moet in staat zijn te werken in een hectische omgeving waarbij er sprake is van zeer verschillen realisatietrajecten voor wat betreft(technische)diepgang, startmoment (wel/geen beschrijvingen beschikbaar) en klantcontact. De gekozen ontwikkelmethodiek dient passend te zijn voor het op te lossen vraagstuk waarbij samenwerking met de testengineer in relatie tot Systeem integratie test

Bekijk vacature »

Pagina: 1 2 volgende »

Mark Hogeveen

Mark Hogeveen

06/12/2013 15:46:16
Quote Anchor link
Hallo, misschien een erg simpele vraag.

Bij routing voor je website stuur je eigenlijk alle requests door naar 1 pagina. Meestal index.php.
Doe je dan dus ook de POST data daarnaartoe sturen? En hoe doe je die dan weer doorgeven aan de juiste controller?
En hoe doe je alle get variabelen verwerken? Doe je dan iets als $_GET[0], $_GET[1] etc?
Ik begrijp niet echt wat het voordeel is van een router. Je moet telkens de juiste controllers/models/vieuws includen, soms (volgens mij) onnodig een header gebruiken om een gebruiker door te sturen naar de juiste locatie.
Daarnaast lijkt me het controleren van GET variabelen moeilijker, alles doe je rewriten naar mooie URL's,
Dus dit: www.site.nl/help.php?action=view&item=10023 wordt dit: www.site.nl/help/view/10023
Aan de tweede url zou je niet meer kunnen zien of view een map is, of (de waarde van) een veriabale.
Niet dat dit voor buitenaf belangrijk is, of dat bezoekers hier iets mee moeten. Maar hierdoor lijkt het me verwarrend. Ook zou ik niet weten wat ik moet doen als een pagina direct wordt aangeroepen, dus niet door de router, maar rechtstreeks (zonder include, en dus zonder code die in de router eventueel erboven zou staan, voor het include statement)
Een error 404 geven is dan eigenlijk liegen, doorsturen naar de router en zo een omweg maken lijkt me ook raar.
Gewijzigd op 06/12/2013 15:49:34 door Mark Hogeveen
 
PHP hulp

PHP hulp

28/01/2023 13:50:01
 
Wouter J

Wouter J

06/12/2013 15:51:32
Quote Anchor link
Je begrijpt dat je bij het url rewritten aangeeft dat die view hier een action query waarde is? Dus dat dat helemaal niks uitmaakt?

Bij MVC moet je bepalen wat er gaat gebeuren met die route, welke controller die gaat gebruiken. Dat doet een router. Die kijkt dus alleen, welke controller moet ik nu aanroepen. Is er geen controller gevonden, dan geeft hij een 404. Dat is geen liegen, er wordt een pagina aangeroepen die niet bestaat. We hebben het nu niet meer over dat simpele index.php font controller bestandje, maar over de pagina die je aanroept.
 
Mark Hogeveen

Mark Hogeveen

06/12/2013 16:54:32
Quote Anchor link
Elk php bestand op de server wordt eigenlijk gezien als een pagina, als je dus /controllers/welcome.php hebt, dan wordt die bij de router aangeroepen, en wordt er bijvoorbeeld een view van gemaakt.
Als je nu rechtstreeks het adres intypt naar welcome.php, roep je die dus aan zonder door de router te gaan.
Bij sommige systemen zie je in de code dat er een error wordt gegeven als "Direct script acces not allowed"
Dit vind ik lelijk.
 
Wouter J

Wouter J

06/12/2013 16:56:22
Quote Anchor link
Nee, niet elk bestand wordt gezien als een pagina. Alleen de front controller is een pagina, die beslist wie wat mag afhandelen.

De WelcomeController handelt bijv. de url index.php/ af. De PostController::showAction handelt index.php/post/123/hello-world af.

Als je naar /controllers/welcome.php gaat bezoek je geen pagina, je bezoekt een bestand met daarin informatie hoe je de url index.php/ moet afhandelen.
 
D Vivendi

D Vivendi

06/12/2013 17:11:55
Quote Anchor link
Als je naar /controllers/welcome.php gaat, dan bezoek je als het goed is een php Class en krijg je dus geen output te zien. Vandaar dat dit dus vaak met een "Direct access not allowed" wordt geblokkeerd. Je hebt daar namelijk niks te zoeken.
 
Mark Hogeveen

Mark Hogeveen

06/12/2013 20:23:12
Quote Anchor link
D Vivendi
Ja, dat is dus wat ik bedoel.
 
Ozzie PHP

Ozzie PHP

06/12/2013 20:30:19
Quote Anchor link
Harry,

Je moet het net even iets anders aanpakken. Als je nou enkel en alleen je index.php in je "public" directory zet, en alle overige pagina's in een "private" directory, dan kan niemand via de browser een pagina aanroepen. In je index.php pagina in de public map zet je dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

require '/pad/naar/private/map/index.php';

?>

In de index.php in de private map ga je dan gewoon verder zoals je dat normaal ook zou doen, alleen staan nu dus alle bestanden in de private map. Het voordeel is dus dat mensen via de browser niet meer rechtstreeks een pagina kunnen aanroepen zoals jij hierboven aangaf. Daarnaast is het een stuk veiliger... omdat mensen niet meer via de browser rechtstreeks een bestand kunnen aanroepen.

Ik hoop dat je iets aan deze tip hebt.
 
Ozzie PHP

Ozzie PHP

07/12/2013 23:30:57
Quote Anchor link
Is het nog gelukt?
 
Local Dev

Local Dev

08/12/2013 00:19:29
Quote Anchor link
@Ozzie, waarom een require naar een private index.php file?
 
Dos Moonen

Dos Moonen

08/12/2013 00:54:38
Quote Anchor link
Local Dev op 08/12/2013 00:19:29:
@Ozzie, waarom een require naar een private index.php file?

http://wordpress.stackexchange.com/questions/58391/is-moving-wp-config-outside-the-web-root-really-beneficial

Ik kan me ook vaag herinneren dat ik ooit over een aanval gelezen hebt die de php handler uitschakelde tot je Apache opnieuw opstarte.
Gewijzigd op 08/12/2013 00:55:19 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

08/12/2013 01:12:52
Quote Anchor link
>> @Ozzie, waarom een require naar een private index.php file?

Wat bedoel je precies met je vraag?

Die index.php in je private map is de bootstrap. Door alle bestanden in een private map te zetten kunnen ze niet rechtstreeks via de browser worden aangeroepen en dit vergroot de veiligheid. Maar ik weet niet of dit een antwoord op jouw vraag is, of dat je iets anders bedoelde?
 
Local Dev

Local Dev

08/12/2013 01:34:46
Quote Anchor link
Ik bedoel dat ik ik het vreemd vind overkomen dat je in de public map een index.php bestand hebt en je daarin een require uitvoert naar een private index.php ..

Zelf plaats ik alleen maar mijn index.php, css, js en images in de public directory.
Voor de rest staat alles in de de root directory, maar ik require / include geen bootstrap file, alleen de autoloader die de applicatie start
 
Ozzie PHP

Ozzie PHP

08/12/2013 03:15:41
Quote Anchor link
Ik zie niet wat er raar aan is hoor? Waarschijnlijk staan de dingen die jij dan in je public index.php hebt staan bij mij in de private index.php. Dat is waars. het enige verschil. Ik heb bewust zo min mogelijk code in mijn public index.php staan. Alles staat dan veilig op een plek waar niemand er van buitenaf bij kan.
 
Mark Hogeveen

Mark Hogeveen

08/12/2013 11:33:32
Quote Anchor link
Maar wat maakt het uit als er iemand een request doet naar een script, dat geen output geeft, maar wel wordt gebruikt om bijvoorbeeld te includen.
Je hebt dan toegang tot de "pagina" (het script) maar dat is toch niet onveilig?
Het enigste dat iemand dan zou kunnen proberen is bepaalde input geven met POST of GET requests, maar als je daar rekening mee houdt kan er niks gebeuren toch?
Het is natuurlijk wel logisch om dit soort scripts af te schermen.
Een voorbeeld (niet echt mvc, maar als voorbeeld)

contact.php (formulier etc.)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['send'])) {

// require het bestand om het formulier te verwerken
require "ContactController.php";
}

?>

<!-- Form stuurt data naar huidige pagina -->
<form method="post" action="">
Bericht: <textarea name="msg"></textrea>
<input type="submit" name="send" value="Verzend" />
</form>

Als je nu ContactController rechtstreeks zou aanroepen via de browser, zou je een lege pagina krijgen. ContactController denkt dat er een formulier is verzonden, en wil een niet-verzonden formulier verwerken.
Dat zou dus een fout kunnen veroorzaken.
Gewijzigd op 08/12/2013 11:33:49 door Mark Hogeveen
 
Wouter J

Wouter J

08/12/2013 12:22:02
Quote Anchor link
Het is wel onveilig, mensen kunnen dan met bepaalde tools de content van je script lezen. En dat is nou niet echt geweldig...
 
Ozzie PHP

Ozzie PHP

08/12/2013 14:30:43
Quote Anchor link
Of stel dat je PHP server er een keer uitklapt dan zijn al je bestanden voor de complete buitenwereld zichtbaar en weet iedereen precies hoe je code in elkaar zit.

Maar goed, je moet het vooral zelf weten. Het was een goed bedoelde tip. Wat je ermee doet laat ik helemaal aan jou over.
 
Mark Hogeveen

Mark Hogeveen

12/12/2013 18:46:25
Quote Anchor link
Nee, heel erg bedankt dat er mensen zijn die mij hierop wijzen!
Van de reactie van Wouter J schrik ik een beetje. Tools waarmee je de PHP scripts kunt zien? Lekker dan... Ik dacht dat dit vrijwel onmogelijk is, dat je dat alleen kon als je echt toegang had tot het FTP.
En wat Ozzie zegt: ik begrijp dus dat als de PHP server eruit ligt, dan wordt de PHP code dus niet meer geparst (logisch) en dus wordt het als plain tekst/html gestuurd naar de client (ook logisch).

Nu toch nog een vraag, na 4 dagen.

Bij een router heb je dus de map en bestandsnamen in een GET variabele staan.
site.nl/public/page.php?item=1234 rewrite je naar site.nl/page/item/1234
Door dit rewriten raak ik juist door de war. Is het voor mij misschien verstandiger, om eerst helemaal niet te kijken naar het herschrijven van URL's, en gewoon eerst eens met niet-herschreven URL's te werken?
Dan komt dat rewriten wel vanzelf?
 
Local Dev

Local Dev

12/12/2013 20:18:17
Quote Anchor link
Kijk eens naar frameworks als ZF2 en Symfony hoe zij dit afhandelen, ik geloof dat je bij het bestuderen hiervan je vraag wordt beantwoord.
 
Ozzie PHP

Ozzie PHP

12/12/2013 21:24:24
Quote Anchor link
>> ik begrijp dus dat als de PHP server eruit ligt, dan wordt de PHP code dus niet meer geparst (logisch) en dus wordt het als plain tekst/html gestuurd naar de client (ook logisch).

Inderdaad, en als je niet ervoor hebt gezorgd dat directories worden afgeschermd zijn al je bestanden ook nog eens zichtbaar. Daarom wil je bestanden die code bevatten dus niet in je public directory hebben staan.

>> Door dit rewriten raak ik juist door de war. Is het voor mij misschien verstandiger, om eerst helemaal niet te kijken naar het herschrijven van URL's, en gewoon eerst eens met niet-herschreven URL's te werken?

Nee, dat zou ik niet doen. Ik zou juist zorgen dat je het principe snapt, om jezelf achteraf een hoop werk en frustraties te besparen ;)

Hoe het in de details werkt ga ik je nu niet uitleggen, maar het principe is in hele grote lijnen als volgt.

URL: jouwsite.nl/fotoalbum/toon/5

Deze URL wordt opgevangen door jouw index.php in de public map en stuur je door naar de index.php in de private map (ook wel bootstrap genoemd). Uiteindelijk komt deze URL in een router terecht en wordt deze opgesplitst in:
- fotoalbum
- toon
- 5

Deze "route" wordt gematched met een controller (de FotoAlbumController) en een actie (de toonAction), waarbij 5 het nummer is van de foto die moet worden getoond.

Dit is even een heel globale uitleg die wellicht een kwartje doet laten vallen ;)
 
Wouter J

Wouter J

12/12/2013 22:28:11
Quote Anchor link
Of kijk gewoon eens naar een simpele tool als silex. Die toont op een simpele manier hoe je omgaat met routing, etc. Het biedt vele integratie mogelijkheden met andere libraries en je hebt nog steeds bijna alles in de hand!
 
Mark Hogeveen

Mark Hogeveen

15/12/2013 19:18:09
Quote Anchor link
Ik heb heel wat geëxperimenteerd. Mij vallen 2 verschillende soorten manieren van routing op.
- Routen met alle mogelijke URL's in een lijst, een soort register van alle pagina's dus.
- De URL's niet opslaan in een lijst, maar gewoon uit de URL zelf de informatie halen.

De eerste manier lijkt me het handigst, volgens mij doet Symfony het ook zo. Het nadeel is wel dat je een configuratie moet maken waar je soms dus heel veel routes moet definiëren.

De tweede manier vind ik minder, in sommige gevallen worden de routes nog steeds bepaald door de bestandsnamen van files. Dus als je een file hebt die contactPage.php heet, dan zou de route eruit zien als /contactPage/ terwijl je dit zou willen: /contact/
Je moet dan de naam van het bestand of controller o.i.d veranderen.
Terwijl routing juist onafhankelijk van bestandsnamen moet zijn.
 

Pagina: 1 2 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.