[PHP] PphGraphy icm OOP framework

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rvanlaak
  • Registratie: Juni 2005
  • Laatst online: 19-09 10:52
Ha,

Ik ben bezig geweest met een klein framework voor het snel en gestructureerd kunnen opzetten van een website. Dit houdt voor mijn principes in het aanroepen van een Application, welke dan verder zelf de pagina opzet met een template en database tekst behorende bij die pagina.

Nu wil ik in mijn framework een aantal externe (vaak GPL license) functionaliteiten inbakken. Denk hierbij aan mooie functies als Advanced Poll (http://www.proxy2.de/scripts.php) en PhpGraphy (http://phpgraphy.sourceforge.net/). Advanced Poll is inmiddels werkende, mijn probleem ligt bij PhpGraphy.

Stand-alone werkt PhpGraphy geweldig! Dit foto-album genereert zelf zijn thumbnails en alles, en dat in combinatie met flat-files. In mijn vorige site heb ik deze ingebakken door middel van een iframe, maar hier wil ik nu vanaf! Het probleem is dat ik het niet geintegreerd krijg. En met integratie bedoel ik dan dat mijn framework de content welke phpgraphy genereert in mijn eigen template zet. Code waarmee ik dit probeer te bereiken is:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class fotos extends DefaultPage 
{
    function execute()
    {
        set_include_path('classes/phpgraphy');
        ob_start();
                require_once 'index.php';
                $content = ob_get_contents();
                ob_end_clean();
                $this->pageInfo['text'] = $content;     
    }
}
?>


In combinatie met een .htaccess bestand wordt bovenstaand ´fotos.php´ bestand ingeladen, welke dan weer phpgraphy moet gaan inladen. Echter krijg ik het niet voor elkaar om vanuit phpgraphy de config.inc.php te includen. PhpGraphy maakt om te beginnen een hoop relatieve constanten aan met daarin directory verwijzingen.

Concreet dus, hoe lukt het me om vanuit een OO framework een non-OO app te includen?

Kan dit door middel van één van onderstaande opties, en zo ja hoe:
  • PHP > set_include_path icm ob_start
  • .htaccess files

[ Voor 3% gewijzigd door Rvanlaak op 07-02-2009 16:22 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Geef gewoon een absoluut pad naar die config.inc.php op? Of zorg dat je oude include_path nog steeds aanwezig is door bij set_include_path() ook de oude waarde van deze setting mee te geven?

{signature}


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
PhpGraphy zal zijn files includen relatief aan het pad waarbinnen jij hem geinclude hebt, in plaats van vanuit zijn eigen directory. Kwestie van de include-paden aanpassen.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online

Acties:
  • 0 Henk 'm!

  • Rvanlaak
  • Registratie: Juni 2005
  • Laatst online: 19-09 10:52
Chdir heeft me inderdaad in eerste instantie geholpen met wat ik bedoelde! Thnx!

Maar het idee is dus dat je door middel van chdir je huidige working directory verzet. Betekent dit dan ook, dat als ik eerst een chdir command uitvoer, en daarna het include path wijzig, dat het include path dan vanuit de working directory wordt gewijzigd?

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 21:26
Ik werk altijd op de volgende manier:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//helemaal bovenaan alle code:
define( 'PATH', dirname( __FILE__ ) );

//vervolgens in je eigen code als volgt werken:
require( PATH . DIRECTORY_SEPARATOR . 'file.php' );

//Je kunt dan chdir gebruiken zonder dat je eigen werkdirectory (effectief) veranderd
chdir( PATH . DIRECTORY_SEPARATOR . 'folder' );

//en dan werkt de volgende constructie in de code van derden ook goed:
require( 'file.php' );

//maar als je zelf iets aanpast in de code van derden en een include nodig hebt, dan kan het zo:
require( PATH . DIRECTORY_SEPARATOR . 'anotherFile.php' );


Als ik me niet vergis komt er in PHP6 een nieuwe constante voor deze werkwijze. Op dit moment bestaat er wel de __DIR__ constante, maar die is voor code in verschillende bestanden verschillend, terwijl als je 'm zelf in het begin definieert PATH de waarde blijft houden van de directory van het eerste bestand.

offtopic:
Zoals je ziet gebruik ik ook DIRECTORY_SEPARATOR. Dit is strict genomen niet noodzakelijk omdat Windows zowel een backslash als een forward slash accepteert. Linux lust geen backslashes. Zolang je de '/' gebruikt snappen zowel Windows als Linux het.

[ Voor 12% gewijzigd door doeternietoe op 07-02-2009 18:58 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Het gebruik van DIRECTORY_SEPARATOR is misschien wat overbodig. Voor zowel Windows als Unix systemen is deze in principe gelijk, aangezien PHP dit zelf goed interpreteerd. Verder is het wel ongeveer zoals ik ook werk. Eventueel kan je ook gebruik maken van $_SERVER['DOCUMENT_ROOT'], die je een absoluut pad naar de public_html gaat opleveren.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1