http://nl1.php.net/manual(...)types.string.parsingquote:Op vrijdag 14 juni 2013 22:01 schreef Light het volgende:
[..]
Hmm... "$foo->bar" werkt wel (als er een property bar bestaat) maar "$foo->bar()" werkt niet (als er een method bar bestaat). Dat klinkt wel onlogisch.
Niks mis mee. Zolang het maar duidelijk is. En zonder . al die . stomme . punten . is.quote:Op zaterdag 15 juni 2013 10:45 schreef papernote het volgende:
Nee hoor, mensen die de automatische string-expansion gebruiken zijn stom.
Eens dat de punten stom zijn. In elke andere taal die ik beheers zijn het plustekens en bijna altijd als ik terugswitch naar php doe ik het de eerste keer fout...quote:Op zaterdag 15 juni 2013 10:52 schreef slacker_nl het volgende:
[..]
Niks mis mee. Zolang het maar duidelijk is. En zonder . al die . stomme . punten . is.
| 1 | $zoals = "deze regel "+$is+" opgebouwd."; |
Zoals je hebt ontdekt zijn er soms wel wat dingen mis meequote:Op zaterdag 15 juni 2013 10:52 schreef slacker_nl het volgende:
[..]
Niks mis mee. Zolang het maar duidelijk is. En zonder . al die . stomme . punten . is.
| 1 2 3 4 | <?php echo "tekst lala {$foo->bar()} blabla zozo"; echo 'tekst lala '. $foo->bar() .' blabla zozo'; ?> |
| 1 2 3 4 | <?php echo "<a href=\"{$this->getLink()}\">link</a>"; echo '<a href="'. $this->getLink() .'">link</a>'; ?> |
Ik vind dat een mindere optie, in dat geval zou ik gewoon (s)printf gebruiken. Als ik code review van mijn collega's krijgen ze het terug als het zo is opgebouwd.quote:Op zaterdag 15 juni 2013 10:56 schreef Maringo het volgende:
[..]
Eens dat de punten stom zijn. In elke andere taal die ik beheers zijn het plustekens en bijna altijd als ik terugswitch naar php doe ik het de eerste keer fout...
Maar ik vind het logischer qua taal dat je de variabele buiten de string zet.
[ code verwijderd ]
| 1 2 3 4 | <?php $route['^(en|nl|de)/(news|nieuws)/(:num)'] = 'news/article'; $route['^(news|nieuws)/(:num)'] = 'news/article'; ?> |
Klopt. Dus eigenlijk moet ik een functie maken die het juiste stukje url opzoekt.quote:Op zaterdag 15 juni 2013 18:58 schreef Sitethief het volgende:
Als uri->segment(3) het derde stukje in je uri teruggeeft, werkt uri->segment(4) in dit geval dan niet? Omdat je uri nu een stukje langer is.
| 1 2 3 4 5 6 | <?php // oud $route = "/:controller/:action/:id"; // nieuw $route = "/:lang/:controller/:action/:id"; ?> |
Dit is inderdaad een veel mooiere oplossing.quote:Op zaterdag 15 juni 2013 19:28 schreef zoem het volgende:
Ik ken CI niet zo heel goed, maar ik neem aan dat er een soort router in zit. Met een route pattern zoals in ZF kun je urisegmenten labelen, zodat je niet afhankelijk bent van de volgorde.
[ code verwijderd ]
Dit lijkt me de mooiste oplossing voor het probleem, maar ik weet niet in hoeverre CI dergelijke patterns toestaat en in hoeverre die gemapped worden richting je controllers.
De regex-patterns die in je post staan zijn onderhoudstechnisch niet zo ideaal. Bij elke nieuwe controller moet je het pattern aanpassen, waardoor het op de lange termijn een complexe regex kan worden.
| 1 2 3 4 5 | <?php $langs = array('nl','en','de'); $pattern = '~^(('. implode('|', $langs) .')/)?(news|nieuws)/(\d+)~'; ?> |
Ik zal het zo eens proberen. Bedankt.quote:Op zaterdag 15 juni 2013 20:22 schreef zoem het volgende:
Ik weet te weinig van de controlflow van CI af om er een concreet antwoord op te geven.
De routepatterns die je nu hebt zouden al iets dynamischer kunnen:
[ code verwijderd ]
Mooi is anders, maar scheelt het telkens herhalen van de talen bij alle routes.
Misschien heb je hier iets aan: https://github.com/EllisL(...)nationalization-i18n mbt tot het i18n probleem.
Hoe kan het eigenlijk dat je zowel /news/article als /en/news/article kan krijgen? Lijkt mij dat er ergens anders iets niet goed zit dan.quote:Op zaterdag 15 juni 2013 19:24 schreef pascal08 het volgende:
[..]
Klopt. Dus eigenlijk moet ik een functie maken die het juiste stukje url opzoekt.
Ik heb nog eens goed nagedacht over jullie tips.quote:Op zaterdag 15 juni 2013 21:13 schreef Maringo het volgende:
[..]
Hoe kan het eigenlijk dat je zowel /news/article als /en/news/article kan krijgen? Lijkt mij dat er ergens anders iets niet goed zit dan.
En anders misschien beter om /news/article door te verwijzen naar /en/news/article om zo de consistentie van je urls te behouden.
Youtube bekijkt uit welk je land komt dmv IP-adres geloof ik. Via meta-tags kan je aangeven welke taal de GoogleBots moeten gebruiken.quote:Op maandag 17 juni 2013 17:22 schreef pascal08 het volgende:
Previously...
Gisteren ben ik zover gekomen dat ik de taal in de URL werkend heb gekregen. Alle links werden dynamisch opgebouwd met behulp van de ingestelde taal in de config-file van CodeIgniter. Echter liep ik al gelijk tegen het probleem aan dat URL's van ajax requests ook werden veranderd, waardoor URL's niet meer klopten en ik kwam er al snel achter dat dit waarschijnlijk niet de juiste oplossing was.
Ik probeer zoveel mogelijk te lezen over de mogelijkheden van CodeIgniter, maar ik loop toch een beetje vast, omdat ik in grote lijnen niet precies weet wat ik moet doen.
Hoe ik denk dat het zit:
Er zijn 4 mogelijkheden om een taalvoorkeur te kunnen bepalen, namelijk d.m.v:
1. een cookie
2. een sessievariabele
3. de browsertaal
4. een database
Optie 1, 2 en 4 vereisen dat de gebruiker op de site is, of al eens is geweest.
De browsertaal is de enige manier om een voorkeur te kunnen bepalen zonder dat de gebruiker de site al eens heeft gezocht.
Het volgende voor mij een beetje onduidelijk:
Een cookie blijft voor een ingesteld periode op de computer van de gebruiker. Een sessie verloopt (zo heb ik het althans ingesteld) op het moment dat de gebruiker zijn/haar browser sluit. En de database is vanzelfsprekend altijd toegankelijk voor CI. Deze 3 opties zijn dus volgens mij allemaal geschikt om voor CI te bepalen welke taal er ingesteld moet worden.
Ik heb heel wat gegoogeld naar i18n scripts, maar bijna alle scripts gebruiken $config['language'] om de taal in op te slaan en uit te lezen. Mij is het nu onduidelijk wat $config['language'] precies is en wat het doet. Waar wordt deze instelling opgeslagen? Op de computer van de gebruiker, in een geheime database? Ik weet het echt niet.![]()
![]()
Wat ik wil bereiken:
Ik wil hetzelfde als YouTube. Is er geen informatie in de vorm van een stukje URL, een sessievariabele, een cookie of wat dan ook? Dan wordt de browsertaal gebruikt.
Bezoekt de gebruiker de site via een URL die een taalvoorkeur bevat? Sla de taal op als sessievariabele (of in een cookie).
Stelt de gebruiker een andere taal in, maar is hij/zij niet ingelogd? Sla de taal op in een cookie.
Is de gebruiker ingelogd en stelt hij/zij een andere taal in? Sla de taal op in de database.
Wat nu nog onduidelijk is:
Hoe gaan de Google-bots hiermee om? Ik kwam namelijk door het googlen naar "browsertaal" erachter dat die bots logischerwijs geen browser gebruiken en dus ook geen browsertaalvoorkeur hebben. Moet ik dus nog een extra scenario toevoegen waarbij er dus helemaal geen informatie is en er wordt teruggevallen op een standaard taal?
Conclusie:
Op deze manier heb ik volgens mij alle mogelijke scenario's gedekt en hoeven de URL's niet per se informatie over de taal te bevatten. Wat ik nu moet doen is de core van CodeIgniter uitbreiden met een class die dus elke keer de juiste vertalingen ophaalt op basis van de taal die de gebruiker heeft ingesteld of de browsertaal.
PS: Ik hoop dat ik deze post zo overzichtelijk mogelijk heb gehouden. Er zitten een hele hoop vragen in verwerkt waar ik waarschijnlijk onmogelijk allemaal antwoord op kan krijgen. De belangrijkste vraag is in ieder geval welke volgorde ik moet aanhouden in het bepalen van de taal (als dit aan de orde is).
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Array ( [id] => 95 [titel] => nieuwsbericht 1! [inhoud] => eorighreg [url] => nieuwsbericht-1 [type] => nieuws [volgorde] => [images] => 0 [parent_id] => 0 [client_id] => 3 [menu] => 0 [subsite] => 2 ) |
| 1 2 3 4 5 6 7 8 9 10 11 | 9 n e n n 0 0 3 0 2 |
| 1 2 3 | foreach($res as $output){ echo $output["titel"]."<br />"; } |
print_r $res geeft wel gewoon ditquote:Op dinsdag 18 juni 2013 11:40 schreef Pakspul het volgende:
print_r $res en dat soort grappen, tot hoever ben je zelf al gekomen met debuggen?
Pleur error_reporting(E_ALL); ook eens aan, want $res moet een array zijn waarin arrays zitten met daarin de id => 95, etc.
print_r($output); zou nu de volgende dingen moeten weer geven: 95, nieuwsbericht 1!, eorighreg, nieuwsbericht-1, etc
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Array ( [id] => 95 [titel] => nieuwsbericht 1! [inhoud] => eorighreg [url] => nieuwsbericht-1 [type] => nieuws [volgorde] => [images] => 0 [parent_id] => 0 [client_id] => 3 [menu] => 0 [subsite] => 2 ) |
In dit geval kun je direct echo $res['titel'] doen. Je hebt een foreach nodig als deze item nog in een array zit.quote:Op dinsdag 18 juni 2013 13:01 schreef boskameel het volgende:
[..]
print_r $res geeft wel gewoon dit
[ code verwijderd ]
Print_r $output zoals op de manier die jij beschrijft. De array bevat 1 item met de juiste dingen die ik wil, het gaan alleen mis in de loop. Die error_reporting(E_ALL) staat aan, de errorlog blijft leeg, dus zijn er geen fouten neem ik aan? Alleen een verkeerde manier van loopen denk ik?
| 1 2 3 4 5 6 | Array ( [0] => Array( [id] => 95 ) ) |
| 1 | int i = (dx + 2*5) % 5; |
| 1 2 3 4 5 6 7 8 | int i; if (dX == -1) { i = 4; } else if (dX == 5) { i == 0; } else { i = dx; } |
| 1 2 3 4 5 6 | <?php $foo = (string) 'bar'; echo $foo[0]; //output: b echo $foo[1]; //output: a echo $foo['onbestaande-index']; //output: b ?> |
Geef de gehele php code es vanaf het aanmaken van de query tot en met het uitvoeren van de result set.quote:Op dinsdag 18 juni 2013 13:01 schreef boskameel het volgende:
[..]
print_r $res geeft wel gewoon dit
[ code verwijderd ]
Print_r $output zoals op de manier die jij beschrijft. De array bevat 1 item met de juiste dingen die ik wil, het gaan alleen mis in de loop. Die error_reporting(E_ALL) staat aan, de errorlog blijft leeg, dus zijn er geen fouten neem ik aan? Alleen een verkeerde manier van loopen denk ik?
Als $res een 1-dimensionale array teruggeeft zal een foreach loopen over de elementen in die array, de index ['titel'] is er dan niet.quote:
Die laatste levert waarschijnlijk ook een notice op. Maar die wordt standaard genegeerd.quote:Op dinsdag 18 juni 2013 13:13 schreef KomtTijd... het volgende:
Stukje php-weirdness.
[ code verwijderd ]
Ik ben wel benieuwd watvoor MySQL-functie je gemaakt hebt dat'ie inconsistent is in de opbouw van de output.
Mijn vermoeden bleek niet te kloppen:quote:Op dinsdag 18 juni 2013 13:13 schreef KomtTijd... het volgende:
Stukje php-weirdness.
[ code verwijderd ]
| 1 | Warning: Illegal string offset 'onbestaande-index' in php shell code on line 1 |
Hoewel de uitkomst raar lijkt, is het gedocumenteerd gedrag:quote:Op dinsdag 18 juni 2013 13:13 schreef KomtTijd... het volgende:
Stukje php-weirdness.
[ code verwijderd ]
Ik ben wel benieuwd watvoor MySQL-functie je gemaakt hebt dat'ie inconsistent is in de opbouw van de output.
Positie 0 bevat dus het karakter 'b'.quote:String conversion to numbers
When a string is evaluated in a numeric context, the resulting value and type are determined as follows.
If the string does not contain any of the characters '.', 'e', or 'E' and the numeric value fits into integer type limits (as defined by PHP_INT_MAX), the string will be evaluated as an integer. In all other cases it will be evaluated as a float.
The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero).
Zulke reacties hoor ik vaker, lijkt alsof ZF2 een beetje de boot gemist heeftquote:Op dinsdag 18 juni 2013 21:41 schreef zoem het volgende:
[..]
Alleen nog een beetje mee gespeeld, nog geen volwaardige applicatie omheen gebouwd.
De ontwikkeling heeft gewoon te lang geduurd en daardoor hebben andere frameworks zoals Symfony 2 een voorsprong gekregen. ZF2 is op bepaalde punten radicaal anders dan ZF1, dus je migreert (projecten) niet zomaar even. Daarnaast is de performance van ZF2 nog niet optimaal; in het beste geval gelijk aan ZF1. Veel meer function calls. De steilere learning curve van ZF helpt natuurlijk ook niet echt.quote:Op dinsdag 18 juni 2013 21:45 schreef henrivo het volgende:
[..]
Zulke reacties hoor ik vaker, lijkt alsof ZF2 een beetje de boot gemist heeft
Das inderdaad erg jammer. Ik heb ook het idee dat de reputatie van Zend Framework 2 een stuk lager is dan die van Zend Framework destijds. Mee eens?quote:Op dinsdag 18 juni 2013 21:54 schreef zoem het volgende:
[..]
De ontwikkeling heeft gewoon te lang geduurd
Ja, zoiets zou je wellicht kunnen stellen. Niet in de zin dat het een slechte reputatie heeft, maar dat het zich nog moet bewijzen. En daar gaat tijd overheen.quote:Op dinsdag 18 juni 2013 22:09 schreef henrivo het volgende:
[..]
Das inderdaad erg jammer. Ik heb ook het idee dat de reputatie van Zend Framework 2 een stuk lager is dan die van Zend Framework destijds. Mee eens?
quote:
+ allemaal hendig chique features.quote:Op dinsdag 18 juni 2013 22:47 schreef Juicyhil het volgende:
Sublime Text is echt de meest geniale editor. Lekker licht, maar toch uit te breiden met allerlei coole dingen.
Weet je of er een FTP plugin beschikbaar is?quote:Op dinsdag 18 juni 2013 22:47 schreef Juicyhil het volgende:
Sublime Text is echt de meest geniale editor. Lekker licht, maar toch uit te breiden met allerlei coole dingen.
Ja, ik kwam toen wel een betaalde plugin tegen. Maar helaas nog geen gratis plugin gezien. Ik werk, helaas, ook met enige regelmaat via FTP. Moet dan iedere keer via Cyberduck werken enzo. Heb je natuurlijk weer twintig Sublime-vensters openstaan.quote:Op dinsdag 18 juni 2013 22:51 schreef xaban06 het volgende:
[..]
Weet je of er een FTP plugin beschikbaar is?
Ik vind het maar niks om lokaal te editten en vervolgens moet uploaden.
Mja, en anders de folder op de server mounten op mijn desktop mbv samba oid. Thanks.quote:Op dinsdag 18 juni 2013 22:53 schreef Juicyhil het volgende:
[..]
Ja, ik kwam toen wel een betaalde plugin tegen. Maar helaas nog geen gratis plugin gezien. Ik werk, helaas, ook met enige regelmaat via FTP. Moet dan iedere keer via Cyberduck werken enzo. Heb je natuurlijk weer twintig Sublime-vensters openstaan.
Ja leuk, een Netbeans gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.quote:
quote:
quote:Op dinsdag 18 juni 2013 23:00 schreef Juicyhil het volgende:
[..]
Ja leuk, een PhpStorm gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
Dat het gedocumenteerd is wil niet zeggen dat het logisch/praktisch isquote:Op dinsdag 18 juni 2013 21:40 schreef zoem het volgende:
[..]
Hoewel de uitkomst raar lijkt, is het gedocumenteerd gedrag:
[..]
Positie 0 bevat dus het karakter 'b'.
Even teruggelezen: dit is dus ook precies waarom boskameel telkens de eerste letter te zien krijgt. Zoals anderen al aangaven wordt de foreach losgelaten op een platte (ééndimensionale) array en niet op een tweedimensionale array.
Het is maar net wat je erin zoekt. Een IDE is zo veel meer dan een text editor. Denk aan refactoren, deployment, references traceren, unit tests, libraries linken, debugging en nog veel meer. Een text editor heeft over het algemeen geen weet van de context, behalve wat highlighting en eventueel wat hints.quote:Op dinsdag 18 juni 2013 23:00 schreef Juicyhil het volgende:
[..]
Ja leuk, een Netbeans gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
Code highlighting en een treeview zijn wel het absolute minimum. Dat wil niet zeggen dat je niet meer functionaliteit gebruikt. Ik vind een goede auto-complete op functienamen en class names ook erg handig en nuttig, om eens wat te noemen.quote:Op dinsdag 18 juni 2013 23:00 schreef Juicyhil het volgende:
[..]
Ja leuk, een Netbeans gebruiken met 1893 functies waarvan je er 5 regelmatig gebruikt. Maar ondertussen wel je geheugen opvreet. Zelfs voor Java gebruik ik gewoon Sublime. Je hebt niets meer nog dan code highlighting en een treeview links.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |