Gå til innhold

PHP·pub - Programming With Attitude - and beer


Anbefalte innlegg

Gjest Slettet+142

Yes.. Det burde absolutt skje, når mange spørsmål her i PHP-delen ofte har med SQLen å gjøre, ikke behandlingen eller lignende..

 

Edit: Da var ny post på plass i tråden du linket til :)

Endret av Slettet+142
Lenke til kommentar
Videoannonse
Annonse
PHP 6 har nå fått namespace-support!

 

Klikk for å se/fjerne innholdet nedenfor

We now have an implementation of namespaces in PHP 6 HEAD, so here’s a short FAQ about how they work for those that are too laz^H^H^Hbusy to read the whole README.namespaces.

 

Q. Why PHP needs namespaces?

A. Because long names like PEAR_Form_Loader_Validate_Table_Element_Validator_Exception are really tiresome.

 

Q. What is the main goal of the namespace implementation?

A. To solve the problem above.

 

Q. What “namespace X::Y::Z” means?

A: 1. All class/function/method names are prefixed with X::Y::Z.

2. All class/function/method names are resolved first against X::Y::Z.

 

Q. What “import X::Y::Z as Foo” means?

A. Every time there’s Foo as a class/function name or prefix to the name, it really means X::Y::Z

 

Q. What “import X::Y::Z” means?

A. “import X::Y::Z as Z”, then see above.

 

Q. What “import Foo” means?

A. Nothing.

 

Q. What is the scope of namespace and import?

A. Current file.

 

Q. Can same namespace be used in multiple files?

A. Yes.

 

Q. Is there any relation between namespaces X::Y::Z and X::Y?

A. Only in programmer’s mind.

 

Q. How do I import all classes from namespace X::Y::Z into global space?

A. You don’t, since it brings back the global space pollution problem.

Instead, you import X::Y::Z and then prefix your classes with Z::.

 

Q. But doesn’t it mean I will still have long names?

A. Not longer then three elements: Namespace::Class::Element.

 

Q. Why it is not implemented like in <insert your favorite language here>?

A. Because PHP is not <insert your favorite language here> 

 

Also we are considering to add one more feature to namespaces - ability to declare a namespaced constant - i.e. constant named Name::Space::NAME - with same resolution rules like classes - with const operator. Consequently it may be also possible to have const NAME = ‘value’ in global context, meaning the same as define(’NAME’, ‘value’).

 

Also note namespaces are still work in progress, so it may happen it would be changed a lot when it’s released.

http://php100.wordpress.com/2007/08/17/namespaces-faq/

9315193[/snapback]

 

Leste dette for første gang nå; FY FAEN SÅ BRA!

Lenke til kommentar
Gjest Slettet+142

Woot :)

Nå er linken til Databaseforumet på plass :D

 

Edit til Nazgul:

OK, Nazgul. Jeg skal ikke poste slik OT/postcount-post igjen :(

 

Endret av Slettet+142
Lenke til kommentar
  • 3 uker senere...

Definer vanskelig for meg da? Ingenting i php er vanskelig (vel, iallefall ikke når det gjelder webutvikling), men det er enkelte ting som tar litt lengre tid og krever at du holder tunga rett i munnen.

 

En filmdatabase med bilder henta fra imdb og kommentarer, er nok det prosjektet jeg så på som mest utfordrende da jeg lagde det..

Lenke til kommentar
Enig med dabear, det er ingenting som er "vanskelig" i den forstand. Har du tid, klarer du det meste :)

9484050[/snapback]

 

Litt uenig. En vil i mange situasjoner støte på problemer som ikke er trivielle å løse (uansett om du kaster mer tid på det). En kan ikke konstruere et fullautomatisk plugin/extension-system uten en del utfordringer underveis, f.eks. Om en derimot har god hjelp, og god tid (og vilje) til å slå opp i manualen og bruke andre ressurser bør det meste gå an, selv om det av og til krever litt mattekunnskaper og evne til algoritmisk tenkning. :)

Lenke til kommentar

Jeg synes det er vanskelig å gjøre noe effektivt og modulært til enhver tid. Det er ikke vanskelig i PHPs forstand, men du må hele tiden prøve å tenke abstrakt og effektivt. Dessuten synes jeg det er "vanskelig" å holde oversikt over hele PHP-manualen. Er en del ganger jeg har laget funksjoner som allerede eksisterer i PHP-manualen.

Det meste går an med PHP bare man tar tiden til hjelp.

Lenke til kommentar

Synes det er fint lite som er vanskelig i forhold til selve programmeringen i PHP. Det som derimot skaper problemer er lage og handtere standarder og formater man selv lager, database-design og ev. komplekse spørringer mot den, og ikke minst dokumentasjon av systemet man lager. Er vel stort sett der det ligger.

Lenke til kommentar
Synes det er fint lite som er vanskelig i forhold til selve programmeringen i PHP. Det som derimot skaper problemer er lage og handtere standarder og formater man selv lager, database-design og ev. komplekse spørringer mot den, og ikke minst dokumentasjon av systemet man lager. Er vel stort sett der det ligger.

9485085[/snapback]

Jupp, det er så otrolig tidkrevende med dokumentasjon, og man ender ofte opp med å prøve å fikse en bug som egentlig ikke er en bug men en feature man la til selv.

 

Men php manualen er skikkelig bra, oversiktlig osv. Har forsatt ikke funnet noe lignende til Java enda. :(

 

Er enig med at det meste er løselig, men det jeg synes er vanskeligst er å skrive noe som er oversiktlig, fleksibelt og utvidbart uten at man må bruke flere timer på å gå gjennom gammel kode for å skjønne hvordan ting gjøres. Også er det litt tricky å optimalisere et program for fart.

 

Ang. fart, hva er det dere gjør for optimalisering?

Endret av MC2
Lenke til kommentar
Ang. fart, hva er det dere gjør for optimalisering?

9503252[/snapback]

Caching er vel et stikkord. Man kan vel hente mye på å cache den ferdig komplierte PHP-koden, så slipper den å komplieres hver gang skriptet skal kjøres.

Mange har mye å hente på databasefronten. Ofte brukte spørringer kan caches. Samtidig kan enkelte databasedesign og spørringer være tyngre og tregere enn andre.

Lenke til kommentar
Men php manualen er skikkelig bra, oversiktlig osv. Har forsatt ikke funnet noe lignende til Java enda. :(

 

Tja, det finnes mye bra om en bare leter. :)

 

Ang. fart, hva er det dere gjør for optimalisering?

9503252[/snapback]

 

"More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity."

 

“The First Rule of Program Optimization: Don't do it.

The Second Rule of Program Optimization (for experts only!): Don't do it yet.”

 

Men fra spøk til halvor; i 90% av webapplikasjoner ligger flaskehalsen i eksterne ressurser som SQL eller dype includes. Om en er litt lur og begrenser antallet includes en har, samt implementerer caching av SQL-spørringene, og kanskje til og med cacher ferdig-"kompilerte" templates for å bypasse template-motoren, kan en oppnå temmelig høy effektivitet. Vikingboard er nå i stand til å vise forsiden av forumet uten å kontakte databasen i det hele tatt, og resultatet er at forsiden genereres på omkring 5 ms. :)

Lenke til kommentar

Prematur optimalisering er bortkastet. Stort sett ligger flaskehalsen i en liten del av koden din, som du kan optimalisere når du ser at det er behov for det.

 

Er vel noe sånt som at 10% and koden du skriver brukes i 90% av applikasjonens levetid. Det vil si at å optimalisere de 90 resterende prosentene av koden din er bortkastet, ettersom tidsaspektet i denne delen av koden allerede er lav.

 

Men som de andre sier her så er caching stort sett hemmeligheten til raskere fart. (Så lenge det kun er snakk om presentasjon/lesing.)

Lenke til kommentar
Men fra spøk til halvor; i 90% av webapplikasjoner ligger flaskehalsen i eksterne ressurser som SQL eller dype includes. Om en er litt lur og begrenser antallet includes en har, samt implementerer caching av SQL-spørringene, og kanskje til og med cacher ferdig-"kompilerte" templates for å bypasse template-motoren, kan en oppnå temmelig høy effektivitet. Vikingboard er nå i stand til å vise forsiden av forumet uten å kontakte databasen i det hele tatt, og resultatet er at forsiden genereres på omkring 5 ms. :)

9503610[/snapback]

Hva er det med includes som gjør det til en flaskehals? Og hvor mye av en flaskehals er det? En av de enkleste måtene å gjøre ting oversiktlig på er å dele opp ting...

Lenke til kommentar

Include/require i seg selv er ikke så treig. Tom fil ligger på < 0.2ms. Det som gjør det treigt er innholdet. Er det f.eks en gedigen array går det noen ms mer enn strengt tatt nødvendig. Faktisk kan man tjene på å lagre det i et annet format og bygge opp arrayen manuelt. Desto mer avansert array, desto mer å hente. På dev.-serveren min tar det 10ms å hente inn en fil med ca 1000 elementer i en array lagret i en PHP-fil. Samme array som ini-fil kan hentes inn på rundt 4.5-5ms. Nå er det vel ikke hver dag man trenger 1000 elementer i en array lagret i en fil, men poenget er nå at lagring av en array i en php-fil er en dårlig ide. Det finnes betydelig bedre og raskere metoder. Tenk hvis man f.eks vil ha online redigering av den fila?

 

PS: Verdt å merke seg at maskinen jeg kjører det på er utdatert for å si det pent og kjører endel ting. Med andre ord er ikke tallene i seg selv representative.

 

Edit: Litt feil i testingen. Include av tom fil var litt raskere enn først antatt.

Endret av Ernie
Lenke til kommentar

Oppdaget noe jeg ikke visste fra før, og tenkt at jeg kunne dele det siden det er ganske brukbart.

 

Man kan tydeligvis kalle funksjoner og klasser sånn:

PHP
<?php

$funcname "strtolower";

echo $funcname("Hello");

 

$classname "testclass";

$a = new $classname;

$a->do_something();

?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...