Posts by Darsstar
-
-
Zet je error reporting hoger en kom er achter dat PHP een Headers Already sent foutmelding geeft...
zie [func]ob_start[/func]... -
-
-
Ik vind het heel wonderbaarlijk* dat je een query uit kan voeren voordat je connection.php hebt geinclude en dus nog geen verbinding hebt...
Verder horen stings tussen enkele of dubbele aanhalingstekens te staan...
* ik weet dat PHP automatisch een connectie probeert te te maken als die er nog niet is, maar ik ken bijna geen hosts die dit toe laten...
-
Die punt-komma moet daar toch echt blijven staan...
Tenzij je natuurlijk liever een parse error hebt...Waarom mogen wij de $dbres = blabla code niet zien?
Daar gaat het fout...
Of de query bevat een fout, of er kan niets gevonden worden...PS. als je het kan kijk je via mysql_error() of er een fout is en meld je dit meteen, bespaart tijd...
-
-
PHP
Toon Meer<?php $user = new User(array('username' => 'Darsstar', 'email' => '[email protected]')); try { $user->register(); mail(blabla); // wordt al niet meer uitgevoerd header('Location: woef.php;'); } catch(Exception $e) { // zorg dat de fout wordt weergeven }
Wat ik duidelijk probeer te maken:
Dan moet je de Exceptions maar vangen!
Natuurlijk hoef je Exceptions niet op deze manier te gebruiken. -
right...
Je weet zeker dat je het goede bestand te pakken hebt?
Je weet zeker dat het bestand geupload wordt?
Want die foutmeldingen zeggen dat er nog wel een include op regel 10 staan...Die laatste twee fouten zouden trouwens op 'magische' wijze opgelost moeten zijn wanneer de eerste twee dat ook zijn...
-
Was ja, dat idee heeft Pim al een tijdje over boord gegooit...
Als je gaat proberen Kohana te verkopen ben je verkeerd bezig, dan schend je namelijk de license...
Er hoeft geen copyright op de website zichtbaar te zijn, wel in de bestanden...
Je mag wel de applicatie verkopen, en Kohana daar bij bundelen met de license...*gaat er van uit dat Kohana ook echt de keuze blijft*
-
Ok...
Ik heb wat in te halen...
Het leuke is dat Spinazie dit keer onderuit gehaald wordt...$db moet private zijn omdat het geen parent heeft? huh?
Stel: je wilt Register extenden...
Je wilt een nieuwe method toevoegen en iets met de database doen...
Dan wil je dus iets met $this->db doen...
Maar dat kan niet als Register::$db private is, wel als het protected is...
Private is dus nog een extra 'bescherming', niet alleen tegen manipulatie van buiten de class, maar ook tegen manipulatie van child classes...
Verder snap ik de "hij heeft een parent, dus protected" niet...
Wat heeft de parent er aan?
Voor de parent bestaat die variabele dan helemaal niet, en als die em dan zou gebruiken zouden er fouten komen...
Ik gebruik protected alleen als ik wil dat children die waarde niet kunnen veranderen, of alleen via setters...Hij moet singleton gebruken?
Elke keer?
$this->db is korter dan telkens Database::Connect()...
Database::Connect() lijkt me redelijk singleton, al kan de naam van de method iets beter...CitaatHet is trouwens niet nodig in een niet-statische methode een statische variabele te gebruiken, tenzij je van plan bent hem ooit nog zonder instantie aan te roepen.
Je grootste onzin tot nu toe! En ik heb heel wat onzin van je gezien...Een class is geen object...
Een class is een blauwdruk voor een object...
Je hebt pas een object wanneer je het keyword "new" hebt gebruikt:
$boe = new Boe;Een class mag best zelf dingen controleren...
Een validatie class kan handig zijn, maar hoeft niet...Verder zou ik zelf geen Register class maken (wat Spinazie ook duidelijk probeert te maken), ik zou het eerder een User::register() method maken...
De controles voor de waardes tijdens het registreren zijn tijdens het updaten (User::update()) van een user ook nodig... -
Nog maar even een interessante link van een architectural pattern dat in V5 komt:
http://net.tutsplus.com/tutorials/other/mvc-for-noobs/Kohana maakt het erg makkelijk MVC toe te passen, net als bijna elk framework tegenwoordig...
-
Redelijk ja...
__set() en __get() hebben geen zin als je alleen public variabelen hebt en niets doet voor variabelen die niet bestaan...
Ik vraag me ook af of je __get() en __set() wel door hebt...
__get() heeft namelijk één argument nodig, nu heeft het er geen...PHP
Toon Meer<?php class TestClass { public $var1, $var2, $var3, $var4; protected $var5, $vars = array(); public function __set($name, $value) { if (property_exists($this, $name)) // isset() werkt niet omdat alleen $vars een standaard waarde heeft, en de $var5 dus NULL is... { $this->$name = $value; } else { $this->vars[$name] = $value; } } public function __get($name) { if (isset($this->$name)) return $this->$name; if ( ! array_key_exists($name, $this->vars)) throw new Exception; return $this->vars[$name]; } public function debug() { var_dump($this); } } $test = new TestClass; $test->var1 = 'boe!'; // geen __get(), de variabele is public $test->var5 = 5; // __get() wordt aangeroepen omdat de variabele niet public is $test->var10 = 'schrik!'; // geen error door __set() $test->var100 = 'aaargh!'; // idem try { echo $test->var10; // schrik! echo $test->var; // __get() gooit een exception } catch(Exception $e) { echo 'sorry, die variabele bestaat niet...'; } $test->debug(); /* object(TestClass)#1 (6) { ["var1"]=> string(4) "boe!" ["var2"]=> NULL ["var3"]=> NULL ["var4"]=> NULL ["var5:protected"]=> int(5) ["vars:protected"]=> array(2) { ["var10"]=> string(7) "schrik!" ["var100"]=> string(7) "aaargh!" } } */
Jouw set is dus een beetje vreemd...
Geef de parameters van __set(), __get() etc alleen defaults als je daar een erg goede reden voor hebt...
TestClass::SetDyn() en TestClass::SetStatic() hebben ook geen defaults nodig, je doet er niets mee...
Als je die methods zonder argumenten aanroept ben je ze eigenlijk aan het unsetten...
De return in TestClass::SetStatic() slaat ook nergens op... -
Je vergeet $TesTStaticVar en $TestStaticVar2 te defineren...
Ik heb geen idee waaromje een instantie van dat object zou maken...
En de constante TestStatic bestaat niet... -
Citaat van stan
Ja misschien is het mogelijk dat we bij V5 kunnen aanvinken welke topics bij actieve topics willen. Want sommige categorieën hoef ik er niet tussen te hebben hoor [bdt] bijv.
Zit er al in...
Het moet nog iets verbeterd worden natuurlijk...Verder zal vind Koen het goed als Kohana gebruikt wordt, zolang en maar documentatie komt voor elke functie, en de rest van het team voor is...
-
-> gebruik je in object context...
dat houd in dan je een object hebt gecreeerd door middel van het new keyword.bijvoorbeeld:
$voorbeeld bevat dus het object.
Binnen de methods in de class is het wel handig als je toegang hebt tot dat object, daar is de magische variable $this voor.
Met $this kan je zelfs meer dan met $voorbeeld buiten methods...
$this betekend dat je binnen de class zit, en dan heb je toegang tot protected en private methods en variabelen.:: gebruik je in statische context
Je kan zo dingen doen zonder eerst een object aan te maken, bijvoorbeeld om een statische protected variabele aan te passen.
Omdat het statisch is is die voor elke instantie van die class het zelfde.
De niet-statische methodes hebben gewoon toegang tot alle variabelen en eigenschappen van die class (ok, ik laat private deels achterwegen nu), dus die kunnen die in vergelijkingen gebruiken, of bijvoorbeeld de bestanden van het juiste theme kiezen...voorbeeld:
PHP
Toon Meerclass Template { protected static $theme = 'default'; pulic static theme($theme = NULL) { if (is_string($theme)) { self::$theme = $theme; } return self::$theme; } public function inlucde($file) { include 'templates/'.self::$theme.'/'.$file; } } Template::theme('strangeness'); $template = new Template; $template->include('test.php');
-
Citaat van Reverb
jep thnx
Nieuwe reactie samengevoegd met originele reactie op 21.03.10 19:18:18:
btw deze werkt iets anders
Oh, nee!
Dat betekend dan dat alles meteen onbruikbaar is!
En dat het niet mogelijk is code te recyclen!Oh, wacht...
Dat was sarcastisch...PHP
Toon Meerfunction pageviewlimit() { $error = "Je mag niet meer dan 5 pagina's bezoeken binnen één seconde, wil je je kliklimiet verhogen? Neem dan een betaald account."; if ( ! isset($_SESSION['pageviewlimit'])) { $_SESSION['limit']['time']= time(); $_SESSION['limit']['views']= 1; } else { if (time() != $_SESSION['limit']['time']) { $_SESSION['limit']['time'] = time(); $_SESSION['limit']['views'] = 1; } else { $_SESSION['limit']['views']++; if ($_SESSION['limit']['views'] > 5) { exit($error); } } } }
-
-
SELECT AVG(ai) AS ai FROM
-
Geen verbinding maken met de database...
Die direct admin pagina is alleen de grafische interface om een cron aan te laten maken...http://www.cronjob.nl/
verder kan je dat lezen...