Dank je.quote:Op dinsdag 3 juni 2014 20:55 schreef robin007bond het volgende:
[..]
Hmm, wellicht is het handig om te beginnen met het leren van normaliseren van databases.
http://www.phphulp.nl/php/tutorial/overig/normaliseren/150/
Dus je zult het vast in één record willen hebben in de applicatie zelf, maar dat zou ik niet in de database doen. Eerst zou ik nadenken over je data, dan wat je allemaal wil doen daarmee.
Wellicht is het een leukere oefening om zelf eens wat met PHP te stoeien alvorens je met een PHP-framework gaat werken. Frameworks maken het ontwikkelen eenvoudiger, maar het kan zijn dat je de basis dan een beetje mist.
Op http://codecademy.com/ hebben ze leuke PHP-tutorials. Volgens mij gaan ze daar ook in op OOP.
Veel succes!
Je kunt denk ik het beste beginnen bij waar jij wilt beginnen. Werk voor jezelf in iteraties. Welke functionaliteit wil jij als eerste af hebben, welke daarna, etc. Het überhaupt hebben van een database met banden en daarin kunnen kijken lijkt me dus de eerste iteratie. Daarna kun je daarop steeds verder bouwen.
Dat weet ik, maar de server waar dit op komt te draaien is mijn eigen productiewebserver, dus daar draait mysql toch al op. De eerste opzet was volledig offline.quote:Op dinsdag 3 juni 2014 21:26 schreef slacker_nl het volgende:
sqlite is wel makkelijk hoor, daar heb je geen mysql voor nodig..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php class load { public static function core(){ // logic require 'setup.php'; $setup = new setup(); require 'medoo.php'; $database = new medoo(); require 'route.php'; //$route = new route(); // markup require 'markup/base.php'; } } load::core(); class get { public static function object($name) { return $$name; } } $test = get::object('setup'); var_dump($test); ?> |
Omdat $setup een lokale variabele is?quote:Op woensdag 4 juni 2014 14:21 schreef n8n het volgende:
Waarom werkt zoiets niet?
initialise.php (als enige required in index.php)
[ code verwijderd ]
de var_dump onderin resulteert in: Notice: Undefined variable: setup in initialise.php
wanneer ik $setup dump in base.php (template default) krijg ik wel een object terug: "object(setup)[1]".
base.phpquote:Op woensdag 4 juni 2014 14:26 schreef Aether het volgende:
[..]
Omdat $setup een lokale variabele is?
Kun je base.php hier plaatsen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | <!doctype html> <html> <head> <title><?php present::meta('title'); ?></title> <link rel="stylesheet" type="text/css" href="presentation/style.css"> </head> <body> <?php load::markup('component', 'navigation'); ?> <section id="illustration" class="container gallery"> <header class="page"> <h1>Illustration</h1> </header> <ul> <?php $id = 0; for ($i = 1; $i <= 11; $i++) { if ($id < 11 ) { $id++; } else { $id = 1; } echo ' <li class="project"> <header>Titel omdat het kan ja dus dat jongen</header> <a href=""> <img src="content/illustration/afbeelding-' . $id . '.jpg"> </a> '; } ?> </ul> </section> <section id="project" class="container project"> <header class="page"> <h1>Titel van een project</h1> </header> <article> <p>Hagley is a town in Northern Tasmania, Australia, 22 kilometres (14 mi) southwest of Launceston on the Meander Valley Highway. The area was used by the Port Dalrymple Aboriginal Tasmanians until they were driven from their lands by European Settlement.</p> <footer> Made for NRC </footer> </article> <ul> <?php $id = 0; for ($i = 1; $i <= 11; $i++) { if ($id < 11 ) { $id++; } else { $id = 1; } echo ' <li class="media"> <img src="content/illustration/afbeelding-' . $id . '.jpg"> <footer>caption</footer> '; } ?> </ul> </section> <section id="contact" class="container contact"> <header class="page"> <h1>Get in touch</h1> </header> <article> <p> <img src="content/picture/image.jpg" width="480" height="480"> </p> <p>06 1234 5678</p> <p>hi@example.com</p> <p>LinkedIn</p> <p>Facebook</p> </article> <form> <p> <label for="name">Your name</label> <input id="name" type="text" placeholder="Jane Doe"> </p> <p> <label for="email">Email address</label> <input id="email" type="email" placeholder="you@example.com"> </p> <p> <label for="message">Message</label> <textarea id="message"></textarea> </p> <button type="submit">Send</button> </form> </section> </body> </html> |
1 2 3 | <?php require 'core/initialise.php'; ?> |
$setup wordt niet in deze code gedumpt -- gebeurt dat op een andere plek?quote:Op woensdag 4 juni 2014 14:32 schreef n8n het volgende:
[..]
base.php
[ code verwijderd ]
Staat nog niet zo veel in behalve een wat hardcoded data die ik nog moet automatiseren.
en index.php
[ code verwijderd ]
quote:Op woensdag 4 juni 2014 14:43 schreef Aether het volgende:
[..]
$setup wordt niet in deze code gedumpt -- gebeurt dat op een andere plek?
1 2 3 | <?php $test = get::object('setup'); var_dump($test); ?> |
Sorrie, maar ik snap het nut niet van wat je hier probeert te doen.quote:Op woensdag 4 juni 2014 14:21 schreef n8n het volgende:
Waarom werkt zoiets niet?
initialise.php (als enige required in index.php)
[ code verwijderd ]
de var_dump onderin resulteert in: Notice: Undefined variable: setup in initialise.php
wanneer ik $setup dump in base.php (template default) krijg ik wel een object terug: "object(setup)[1]".
Was het er zelf ook al niet mee eens, wilde een manier vinden om objecten te kunnen extracten, dacht dat het zo kon. Dat het in elkaar stort bij wijziging is niet zo erg want het is ff snel hacken, ben al blij als iets werkt en ga het later nog een keer aanpassen allemaal zodra ik er wat meer van snap.quote:Op woensdag 4 juni 2014 15:57 schreef totalvamp het volgende:
[..]
Sorrie, maar ik snap het nut niet van wat je hier probeert te doen.
Als je files als standaard wilt includen doe je dit meestal in je bootstrap.
Daarnaast blijven je variabelen alleen beschikbaar in core().
Het is ook niet handig om een class method dependencies te geven aan bestanden/classes, als er ergens iets veranderd stort je applicatie in.
Ja moet daar nog kaas van zien te maken.quote:Op woensdag 4 juni 2014 16:02 schreef Tijn het volgende:
n8n, heb je al eens naar autoloading gekeken? Dan hoef je niet steeds de files te includen voordat je een class aanroept.
Wat bedoel je hiermee? Wat wil je precies dat er gebeurt?quote:Op woensdag 4 juni 2014 16:39 schreef n8n het volgende:
[..]
Was het er zelf ook al niet mee eens, wilde een manier vinden om objecten te kunnen extracten
dat als ik get::global('name') doe hij een object returned die $name heet. Leek me een manier om objecten door te sluizen maar ik ben er weer vanaf gestapt.quote:Op woensdag 4 juni 2014 17:18 schreef Tijn het volgende:
[..]
Wat bedoel je hiermee? Wat wil je precies dat er gebeurt?
Als je Composer installeert is autoloading echt een eitje.quote:Op woensdag 4 juni 2014 16:39 schreef n8n het volgende:
[..]
Was het er zelf ook al niet mee eens, wilde een manier vinden om objecten te kunnen extracten, dacht dat het zo kon. Dat het in elkaar stort bij wijziging is niet zo erg want het is ff snel hacken, ben al blij als iets werkt en ga het later nog een keer aanpassen allemaal zodra ik er wat meer van snap.
[..]
Ja moet daar nog kaas van zien te maken.
Heb het nu opgelost door m'n base.php content in index.php te zetten, alle variables zijn nu beschikbaar. Volgens mij kwam het omdat ik een require (navigation) deed binnen een file (base.php) die net daarvoor de andere files pas gedaan had. Kan nu weer ff verder, ga nu routes aanmaken en daarna de templates schrijven die op basis van de route ingevuld worden en dan ben ik er bijna aan de frontend. Daarna een 'CMS' maken zodat m'n vriendin zelfstandig de content kan uploaden.quote:Op woensdag 4 juni 2014 17:35 schreef Tijn het volgende:
Wat voor dingen zitten er in je setup object? Alleen properties of ook methods?
Sowieso begrijp ik je idee van "doorsluizen" niet eigenlijk Is het niet een idee om een static object te maken en met autoloaders te zorgen dat andere objecten erbij kunnen?
Dat heb ikquote:Op woensdag 4 juni 2014 17:58 schreef robin007bond het volgende:
[..]
Als je Composer installeert is autoloading echt een eitje.
Waarom niet gewoon constanten? Die zijn automatisch overal beschikbaar zonder dat je ze (per ongeluk) kunt veranderen.quote:Op woensdag 4 juni 2014 18:21 schreef n8n het volgende:
[..]
Edit: werkt toch niet, dan maar aan de autoloader ff proberen, de setup heeft alleen array's met config (beetje zoals WP het heeft)
1 2 3 4 5 6 7 8 | <?php function __autoload($class_name) { include $class_name . '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2(); ?> |
Ik heb nu dat de class $database niet beschikbaar is in navigation.php (die included is in index.php). Snap er gewoon niks van De setup kan ik beter wel constant neerzetten dan, scheelt weer haren van m'n kopquote:Op woensdag 4 juni 2014 18:31 schreef Tijn het volgende:
[..]
Waarom niet gewoon constanten? Die zijn automatisch overal beschikbaar zonder dat je ze (per ongeluk) kunt veranderen.
Nee, dat zet je in een file die je inlaadt voordat je deze functionaliteit wilt gebruiken. Daarna "kent" je hele app de autoloader en kan-ie automatisch files includen op het moment dat je een class aanroept.quote:Op woensdag 4 juni 2014 18:31 schreef n8n het volgende:
[ code verwijderd ]
Hier staat dan (van php.net) een functie die een autoload doet, met dit moet je dan op elke pagina "__autoload($class_a);" zetten?
require 'setup.php'; $setup = new setup();quote:Op woensdag 4 juni 2014 18:33 schreef Tijn het volgende:
[..]
Nee, dat zet je in een file die je inlaadt voordat je deze functionaliteit wilt gebruiken. Daarna "kent" je hele app de autoloader en kan-ie automatisch files includen op het moment dat je een class aanroept.
Nou, dan is het super makkelijk te configureren. Check even de Composer site.quote:
Dat is de oude manier. De nieuwe manier gaat met spl_autoload_register.quote:Op woensdag 4 juni 2014 18:31 schreef n8n het volgende:
[ code verwijderd ]
Hier staat dan (van php.net) een functie die een autoload doet, met dit moet je dan op elke pagina "__autoload($class_a);" zetten?
En dat doet ie aan de hand van je....? set_include_path?quote:Op woensdag 4 juni 2014 18:33 schreef Tijn het volgende:
[..]
Nee, dat zet je in een file die je inlaadt voordat je deze functionaliteit wilt gebruiken. Daarna "kent" je hele app de autoloader en kan-ie automatisch files includen op het moment dat je een class aanroept.
quote:Op woensdag 4 juni 2014 19:16 schreef robin007bond het volgende:
[..]
Nou, dan is het super makkelijk te configureren. Check even de Composer site.
[..]
Dat is de oude manier. De nieuwe manier gaat met spl_autoload_register.
Maar ik raad je aan om Composer een autoloader te laten genereren. Veel makkelijker.
1 2 3 4 5 6 | <?php function __autoload($classname) { $filename = "classes/". strtolower($classname) .".class.php"; require($filename); } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |