JeroenH: Dat je als hosting bedrijf voorlopig nog niet over gaat naar PHP 5.4 begrijp ik maar al te goed. Maar 5.3 lijkt me wel tijd? PHP 5.2 is namelijk al niet meer supported?
Posts by Stefan.J
-
-
In het voorbeeld vergelijk iMootje de nieuwe gebruikersnaam in de databases, zoals het ook moet. Waarom zou je dit in je script doen? Wanneer je het in je script doet haal je eerst alle bestaande gebruikersnamen uit de databases, en ga je dan pas vergelijken. In plaats van dit direct in de database te doen, wat ook nog eens veel sneller is.
L.Groot: Euhh? Dat is dus ook niet nodig? MySQL vergelijkt strings niet case sensitive.
-
JeroenH: Waar is dat op gebaseerd?
"By default, string comparisons are not case sensitive and use the current character set. The default is latin1 (cp1252 West European), which also works well for English."
-
De oplossing van TS werkt niet omdat TS vergeet door de resultset heen te loopen: De gebruikersnaam wordt nu alleen vergeleken met de eerste gebruikersnaam in de resultset.
Zie hiervoor [func]mysql_fetch_array[/func].
De oplossing van iMootje is in principe prima. Maar waarom is het veld player niet uniek?
-
K.Rens: Er komt niet zoiets als ondersteuning voor Singletons hoor. Ik nam dit alleen als voorbeeld voor de mogelijkheden die je krijgt door de introductie van traits. Singletons zijn altijd al te realiseren sinds er visibility bestaat.
@Hood: Hoezo snel?
-
Op 30 juni 2009 kwam PHP 5.3 uit, alweer even geleden dus. Het lijkt dus tijd voor een nieuwe major release, en deze zit er dan ook aan te komen. De beta versie van PHP 5.4 is namelijk uit, en deze laat mooi zien wat ons te wachten staat.
PHP 5.3 bracht met namespaces en closures nuttige extra functionaliteit naar PHP, maar ook PHP 5.4 is niet misselijk. Hieronder een lijst met de meest interessante wijzigingen in PHP. De lijst is nog niet definitief, het gaat tenslotte om een beta release, en de final release kan natuurlijk nog functionaliteiten uitsluiten.
Nieuwe functionaliteit: Traits
In steeds meer programmeertalen zie je ze terugkomen: Traits. Traits zijn te vergelijken met interfaces, maar dan met functionaliteit. Dit lost het probleem met multiple inheritance (erven van meerderen) van abstracte classes op. Het is niet mogelijk om van meerdere abstracte classes te erven. In sommige gevallen wil je dit echter wel: Bijvoorbeeld als je de functionaliteit van een ArrayObject wilt overnemen, maar de class ook wilt laten erven van Singleton. Dit is nu op te lossen door middel van traits: Je zou een trait Singleton hiervoor kunnen introduceren.php.net heeft hier al een artikel over in de manual: http://nl.php.net/manual/en/language.oop5.traits.php
magic qoutes functionaliteit verdwijnt
In PHP 5.3 is magic qoutes deprecated, en in PHP 5.4 bestaat deze functionaliteit dan ook niet meer. Dit betekent voor bestaande applicaties die nog afhankelijk zijn van magic qoutes dat ze niet kunnen overstappen naar PHP 5.4. Mocht je niet op de hoogte zijn waarom de magic qoutes functionaliteit verwijderd wordt, zie de onderstaande link.http://nl3.php.net/manual/en/security.magicquotes.whynot.php
Type hinting op function callbacks
PHP kent een verkapte vorm van type hinting. Type hinting is nu mogelijk voor arrays en objecten, maar niet voor primitieve types of callbacks. Voor primitieve types zal dit zo blijven, maar callbacks kunnen in PHP 5.4 wel worden verwacht als argument door middel van de callable type hint.Type hinting in PHP 5.3:
PHP 5.4 voegt daar nu de volgende functionaliteit aan toe:
Array shortcuts
Er komt een nieuwe syntax om arrays te initialiseren. De meesten zullen de syntax wel kennen uit Javascript: het aanmaken van array doormiddel van blokhaken ([]).Dit zal er dan ook als volgt uit gaan zien:
Build-in webserver
Er zal aan PHP een mini webserver worden toegevoegd voor testdoeleinden. Het is dan dus niet meer nodig om Apache te installeren om je PHP scripts te testen. PHP krijgt zijn eigen HTTP server aan boord.De <?= notatie behoord niet meer tot de short open tags
De <?= notatie zal nu altijd beschikbaar zijn, of short open tags nu aanstaat of niet.$this zal nu beschikbaar zijn in closures
Als je tegen deze limitatie van PHP 5.3 bent aangelopen zul je hier ongetwijfeld volledig achter staan. Het is nu mogelijk $this te gebruiken binnen closures (die in een methode worden gedefinieerd).Tot slot
Een heuse lijst met mooie wijzigen, en hij is nog niet eens compleet. Jullie zijn vrij hem aan te vullen. Voor een volledige lijst van wijzigingen, zie de onderstaande link.http://www.php.net/releases/NEWS_5_4_0_beta1.txt
Wat vinden jullie van deze wijzingen? Gaan jullie PHP 5.4b uitproberen? En wanneer gaan jullie overstappen als PHP 5.4 beschikbaar is?
-
Feitelijk is een .exe onder Windows niets meer dan een uitvoerbaar binair bestand. Omdat het binair is werd het bestand niet meer wanneer je het met kladblok hebt geopend. Kladblok vervangt namelijk alle tekens die hij niet kent, en wanneer een bestand niet is opgemaakt volgens een charachter encoding is dan nogal wat...
In principe kun je een .exe inderdaad wel aanpassen. Het is echter wel moeilijk (en soms praktisch onmogelijk) te begrijpen wat er soms staat, en waarom dat er staat.
Maar teksten die in de .exe voorkomen (vaak gewoon Strings), kun je met een fatsoenlijke editor inderdaad best aanpassen. Alles wat je niet kunt lezen zou ik met rust laten...
-
Unittesting betekent het testen van code op het niveau van classes en methoden, doormiddel van code. Je schrijft dus testcode die checkt of jouw methoden wel het goede resultaat geven.
http://en.wikipedia.org/wiki/Unit_testingDe test coverage geeft aan hoe goed jij je applicatie hebt getest. Regels, methoden en classes kunnen wel of niet worden geraakt (uitgevoerd) door jouw unittests. Als iedere regel code wordt getest heb je een test coverage van 100%, als je geen unittests hebt, is de test coverage 0%.
@BrokenTrack: HTML is een opmaaktaal, en CSS defineerd daarbij stijlregels. XML is een techniek om data mee te stuctureren. Zowel HTML, CSS en XML zijn dus absoluut geen programmeertalen.
stijnhau: Een formulier komt uiteraard in de view terecht. De views mogen van mij een uitzondering zijn (deze mogen best in PHP geschreven zijn), maar bevatten GEEN applicatie logica. Ze doen dus niets anders dat een pagina opbouwen. Ik had deze als uitzondering moeten noemen.
@F.Ajeti: Testcoverage wat geld oplevert? Javascript kent geen test coverage? Weet jij überhaupt wel waar je over praat?
-
stijnhau: Ieder primitief type in Java heeft inderdaad ook een bijbehorend object, maar het primitieve type zelf is geen object. Ik schrijf nu een PHP applicatie (een REST service) geheel object georiënteerd. Je mist inderdaad soms wel de strong typed aspecten van Java, maar met type hinting en unittesting vind ik dat geen groot probleem.
R.Jipping: Hoe kun je naar de testcoverage kijken als je geen unittests schrijft?
-
IDE's doen het niet aan de hand van een database tabel. Deze genereren de getters en setters voor je aan de hand van de properties.
Niet alles in PHP is een object inderdaad. Maar in Java is dat bijvoorbeeld ook niet zo. Java kent namelijk ook gewoon primitieve types. Nu is dit niet helemaal vergelijkbaar, maar ik vind niet dat dat feit in de weg staat om niet object georiënteerd te programmeren in PHP. Wel moet je zelf iets meer doen, en zit je minder vast aan logische limieten van de taal.
Dat variabelen in PHP dynamisch getypeerd is heeft niets te maken met de mogelijkheid om object georiënteerd te programmeren. Ruby is ook dynamisch getypeerd, en daarin kan ook prima object georiënteerd worden geprogrammeerd.
-
Nogmaals bedankt. Sorry voor de late reactie, was even vergeten te reageren! :p
En blijf zo nu en dan nog langswippen hé!
-
Het lijstje van mijzelf, zoals ik had beloofd.
PHP:
Ik schrijf scripts/applicaties in PHP.
JaIk heb wel eens een complete PHP applicatie geschreven.
JaBij het schrijven van PHP code maak ik eigen functies.
JaBij het schrijven van PHP code maak ik gebruik van classes.
JaIk programmeer in PHP geheel object georiënteerd (uitgangspunt: er is maar één regel PHP buiten de classes te vinden, en eventueel wat configuratie).
JaIk denk na over het ontwerp van de applicatie (technisch ontwerp, niet grafisch).
JaIk test mijn applicatie met behulp van unittests.
JaIk kijk bewust naar de testcoverage van de applicatie.
JaIk maak gebruik van een build script (bijvoorbeeld met Ant) als ik in PHP programmeer.
JaJavascript:
Ik schrijf scripts/applicaties in Javascript.
JaBij het schrijven van Javascript maak ik eigen functies.
JaIk maak gebruik van een framework in Javascript, bijvoorbeeld jQuery
JaIk maak gebruik van functies alsof het classes/objecten zijn, om zodoende een aparte scope te creëren.
Amper, wil ik me wel in gaan verdiepen.Ik maak gebruik van prototyping.
Nee, maar wel een interessante mogelijkheid.Ik denk na over het ontwerp van de applicatie (technisch ontwerp, niet grafisch).
Nee, nog nooit grote JavaScript applicatie geschreven die zich er toe leende.Ik test mijn Javascript code met behulp van unittests.
Nee, maar wordt hoog tijd!Ik kijk bewust naar de testcoverage.
NeeOverig:
Ik programmeer actief in nog meer programmeertalen, namelijk:
JavaIk volg een opleiding in de IT, namelijk:
HBO InformaticaEn aan de hand van jullie antwoorden heb ik voor jullie nog wat vragen:
Voor iedereen die nadenkt over het ontwerp: Wat houdt dat voor jullie in?
Maken jullie class diagrams? Of hoe doen jullie dit?L.Groot & Luc: Hoe schrijf je unittests als je niet object georiënteerd programmeert?
YinYangYo & BrokenTrack & thexerox & L.Groot: Met welk framework schrijf je je unittests voor je Javascript code?
stijnhau: Een tool om getters en setters te genereren hoef je niet te schrijven, iedere zelf respecterende IDE ondersteunt dit al.
stijnhau: Hoezo zou PHP zich niet lenen om 100% OO te programmeren?
R-Mijnten: Een buildtool heeft niets te maken met de Editor/IDE waarin je programmeert.
Lodewijk: Welke buildtool gebruik je?
-
Er staat nu: Als A niet B is, of A niet C is.
Deze conditie is dus altijd waar, en het moet wel degelijk AND zijn.
-
Om nog maar eens te kijken wat voor mensen we in huis hebben, heb ik een vragenlijst voor jullie! Ik ben benieuwd naar jullie antwoorden, en ik zal hem binnenkort ook zelf invullen.
De meeste vragen zijn gesloten vragen.
PHP
Toon Meer[b]PHP:[/b] [b]Ik schrijf scripts/applicaties in PHP.[/b] [b]Ik heb wel eens een complete PHP applicatie geschreven.[/b] [b]Bij het schrijven van PHP code maak ik eigen functies.[/b] [b]Bij het schrijven van PHP code maak ik gebruik van classes.[/b] [b]Ik programmeer in PHP geheel object georiënteerd (uitgangspunt: er is maar één regel PHP buiten de classes te vinden, en eventueel wat configuratie).[/b] [b]Ik denk na over het ontwerp van de applicatie (technisch ontwerp, niet grafisch).[/b] [b]Ik test mijn applicatie met behulp van unittests.[/b] [b]Ik kijk bewust naar de testcoverage van de applicatie.[/b] [b]Ik maak gebruik van een build script (bijvoorbeeld met Ant) als ik in PHP programmeer.[/b] [b]Javascript:[/b] [b]Ik schrijf scripts/applicaties in Javascript.[/b] [b]Bij het schrijven van Javascript maak ik eigen functies.[/b] [b]Ik maak gebruik van een framework in Javascript, bijvoorbeeld jQuery.[/b] [b]Ik maak gebruik van functies alsof het classes/objecten zijn, om zodoende een aparte scope te creëren.[/b] [b]Ik maak gebruik van prototyping.[/b] [b]Ik denk na over het ontwerp van de applicatie (technisch ontwerp, niet grafisch).[/b] [b]Ik test mijn Javascript code met behulp van unittests.[/b] [b]Ik kijk bewust naar de testcoverage.[/b] [b]Overig:[/b] [b]Ik programmeer actief in nog meer programmeertalen, namelijk:[/b] [b]Ik volg een opleiding in de IT, namelijk:[/b]
-
$fouten is dus een integer. En door een integer kun je niet loopen. Je zult dus niet door $fouten moeten lopen, maar door $error.
-
C# is een object georiënteerde programmeertaal? Volgens mij is een blokje een object, die leeft in een wereld. Zodra het blokje uit gaat wordt deze ofwel uit de wereld gehaald, of de status veranderd.
Ik zie dus zo snel twee objecten hierin: een blokje en een wereld. Daarnaast is het balkje natuurlijk ook een object.
Het spel zelf ken ik helaas niet, dus kan me niet helemaal inleven.
-
Dit kwam blijkbaar door de verticale lijn (|) die in de titel stond. Hoe dat precies kan weet ik niet, want ik kan niet meer bij de code helaas.
Nieuwe reactie samengevoegd met originele reactie op 24.08.11 20:48:38:
Wat ik zeg klopt niet helemaal. Het forum waarin het topic stond was van belang, en ook de aanwezigheid en positie van het euroteken was van belang. Vreemd verhaal dus... -
Sorry Luc dat ik het topic even heropen, maar ik wil toch graag nog even een reactie plaatsen omdat ik me iets af vraag.
L.Groot: Veiligheidsredenen? Is dat zo? Naar mijn weten in ereg depricated omdat de preg functies dezelfde functionaliteit (en meer hebben) en sneller zijn?
-
Jullie zien het IP-adres nu als een string van cijfers en puntjes. Dit is feitelijk niet zo, de decimale notatie is slechts een weergave van het IP-adres.
Een IPv4 adres is feitelijk 32 bits lang. En raad eens? Een (unsigned) INT veld in MySQL is ook precies 32 bits lang! De meest efficiënte manier om een IPv4 adres op te slaan is dan ook een integer.
IPv6 adressen maken het iets ingewikkelder. Deze zijn 128 bit lang, en zal je dan ook in bijvoorbeeld een binary veld moeten opslaan in de database. Daarbij moet je wel weer rekening houden met IPv4 adressen, die je moet omzetten in het juiste IPv6 adres.
-
Dit heeft zeker niets met een volle database te maken...
Een grote hoeveelheid data in de vorm van een bestand-upload is mogelijk, maar in de meeste gevallen is het mij overkomen door een oneindige lus. Een lus waarin telkens een nieuwe variabele of array element wordt aangemaakt spuugt het geheugen in no-time vol.