[PHP] Class naming en loading

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
Hallo,

Ik heb op dit moment een vrij "groot" systeem gebouwd in php en loop nu tegen een aantal problemen aan mbt class naming en loading.

Nu heeft een request niet alle classes nodig, dus hoeven ze ook niet geladen te worden. Omdat het aantal steeds groter wordt, wordt het qua performance wel een optie om dit aan te pakken.

Nu heb ik iets gelezen over PEAR naming conventies en kwam ik in de posts op php.net (http://nl3.php.net/autoload) een handige functie tegen. Maar PEAR naming zie ik eigenlijk niet zo zitten, dan zou ik me overal de ram-bam tikken aan "namespaces".

Om nu een gulden midde weg te zoeken had ik het idee om classnames maar 1x voor te laten komen. Dus niet dezelfde classename in een andere namespace. En dan een lookup tabel/file maken met daarin classname en pad.

Het nadeel van mijn "idee" is dat je naast het aanmaken van de klasse ook de lookup file moet aanpassen, maar je kunt wel overal een korte classname gebruiken.

Hoe gaan jullie hier mee om, of heeft iemand misschien een echt goed idee?

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

Waarom heeft de class niet gewoon dezelfde bestandsnaam als de class?
Ik zet er zelf altijd nog .class.php achter.

Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
Om klassen op type/soort te orderen en om het een beetje overzichtelijk te houden plaats ik ze altijd in mappen. En de mappen stellen (bijna) altijd de namespace voor, waar in ik ze zo plaatsen in C# of Java.

Dus alle klassen staan in een structuur van {Bedrijf}.{Product}.{Soort}.{SubSoort}.Klasse.class.php

Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Dus als ik het goed begrijp zou jij met namespaces het probleem hebben dat je meerdere klassen zou hebben die dezelfde naam zouden delen, en dus een conflict zouden veroorzaken?
In dat geval wil je misschien toch even beter na gaan denken over de manier waarop je je broncode hebt gestructureerd, want dit ruikt enorm naar redundancy.

Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
@prototype: Op dit moment niet, puur omdat php het niet kan.
Maar ik kan me gerust voorstellen dat meerdere modules een klasse hebben met een zelfde naam.

Maar het gaat erom dat ik eigenlijk niet alle standaard klassen die ik gebruik in elke file wil includen. Het lijstje includes reist bijna de pan uit.

Volgens de PEAR naming conventions is de volledige classename het "pad" + klasse naam met underscores.

Maar dat wordt wel heel erg enthousiast om dan overal die naam te tikken.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik heb een script geschreven dat in een bepaalde directory naar php bestanden zoekt. Dan neem ik van iedere bestand de naam als key en het pad als value in een array op, welke ik wegschrijf naar een bestand. Ik zet iedere class in een eigen file met de naam van de class als naam van het bestand. Zo kan ik gemakkelijk zo'n bestand genereren. Als ik een nieuwe class toevoeg hoef ik alleen even het script aan te roepen om er gebruik van te kunnen maken. Werkt erg goed moet ik zeggen.

Ik kan je verder trouwens wel aanraden om een korte prefix aan je classes te geven. Iets als DB voor je DB framework classes bijvoorbeeld.

[ Voor 12% gewijzigd door Michali op 29-10-2006 15:09 ]

Noushka's Magnificent Dream | Unity

Pagina: 1