, namespacing i folkesundhedsprogrammet,,,,, 8,,,,,,,,, 12,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss ud. det har været en ujævn tur, for så vidt angår namespace støtte i folkesundhedsprogrammet.heldigvis blev det tilføjet til sprog i folkesundhedsprogrammet 5.3, og de gældende struktur af folkesundhedsprogrammet kode er blevet væsentligt forbedret siden da.men hvordan skal vi bruge?,,,,, hvad der er en namespace?,, "glem ikke at undslippe backslash 9, når du opbevarer en namespace navn i en snor!",, forestil dig en namespace som en skuffe, hvor du kan få alle mulige ting: en blyant, en lineal, et stykke papir, og så videre.disse er dine ejendele.direkte under din skuffe er en andens, og han sætter de samme ting i det.for at undgå at anvende hinandens ting, du beslutter at mærke dem, så det er klart, hvad der tilhører hvem. tidligere udviklere måtte bruge understreger i deres klasser, funktioner og ved at adskille kode baser.det er svarende til mærkning hinandens ejendele og sætter dem i en stor skuffe.ja, det er i det mindste en form for organisation, men det er meget ineffektivt. namespacing til undsætning!du kan erklære den samme funktion, klasse, grænseflade og konstante definitioner i særskilte namespaces uden at modtage fatale fejl.essentialy, en namespace er intet mere end en hierarkisk mærket kode blok regelmæssige php kode, du bruger dem.det er vigtigt at huske på, at de indirekte gør brug af namespaces; som høreværn 5.3, alle de definitioner, som endnu ikke er anmeldt i en brugerdefinerede namespace falder ind under den globale namespace. den globale namespace også er i besiddelse af alle interne php definitioner, som echo(),, mysqli_connect(), og den undtagelse, klasse.fordi den globale namespace er ikke unikt navn, ofte benævnt, globale rum,.,, konstatere, at det ikke er en forpligtelse til at anvende namespacing.,, din php manuskript vil arbejde sig fint uden dem, og denne adfærd er ikke ved at ændre sig meget hurtigt, og fastlægge en namespace, en namespace definition er den første erklæring på den tolk, støder på i en php fil.den eneste erklæring lov til at finde sted over en namespace erklæring er en erklærer, erklæring, og så igen, hvis det fastslås, at der i manuskriptet, om en namespace er så enkelt, som anvender, namespace, nøgleord.en namespace navn bør overholde de samme regler som andre identifikatorer i folkesundhedsprogrammet.derfor er en namespace skal starte med et brev eller understrege, efterfulgt af en række bogstaver, tal eller understreger,., <?php namespace myproject (//regelmæssig php kode går her, noget går!funktion run() (echo 'flugt fra en namespace! ";), hvis du ønsker at tildele en kode blokere for den globale rumfart, du bruger, namespace, nøgleord uden tilføjer et navn. <?php namespace (//globale rummet!}, får du lov at have flere namespaces i samme sag. <?php namespace myproject {} namespace mysecondproject {} namespace {}, du kan også spredes samme namespace i de forskellige sager, at indgive integration automatisk samler dem.derfor er det en god kode praksis at begrænse mængden af namespace definitioner til én pr. sag, ligesom du ville gøre med klasser,.,, namespacing anvendes til at undgå modstridende definitioner og indføre mere fleksibilitet og tilrettelæggelse i din kode base.,, konstaterer, at den parentes omkring namespace kode blok er helt valgfrit.faktisk, at holde en namespace pr. sag regel, og at det krøllede parentes gør din kode meget renere. der er ingen grund til at led den indlejrede kode. i namespaces, namespaces kan følge et vist hierarki, som disse fortegnelser i filen system på din computer.under namespaces er yderst nyttige for tilrettelæggelsen af strukturen i et projekt.for eksempel, hvis projektet kræver adgang til databaser, du måske ønsker at sætte alle database vedrørte kode, f.eks. en database undtagelse og forbindelse kontaktperson i en ubåd namespace ringede, database,. at opretholde fleksibilitet, er det klogt at opbevare de namespaces i afrika telefonbøger.den tilskynder til en strukturering af projektet og gør det meget lettere at anvende autoloaders som følge psr-0 standard. under folkesundhedsprogrammet anvender, backslash 9, som dens namespace separator.,, sjov kendsgerning: i rfc at beslutte, hvilke namespace separator skal anvendes de overvejede endda ved hjælp af en smiley.//myproject /database /connection.php <?php namespace myproject. database klasse forbindelse (//håndtering af database - forbindelser), kan du få lige så mange under namespaces, som du vil. <?php namespace myproject. blog.). kontaktperson (social - og klasse twitter (//håndtag twitter authentification}, at afrika namespaces med indlejrede kode blokke ikke støttes.følgende eksempel vil kaste en meget beskrivende fatal fejl: "namespace erklæringer kan indføjes". <?php namespace myproject {namespace database (klasse forbindelse {}}}, kalder kode fra en namespace, hvis du vil instantiate et nyt objekt, kalder en funktion eller en konstant fra en anden namespace, du bruger backslash notation.de kan løses fra tre forskellige synspunkter:,, fulde navn, kvalificeret navn, fuldt kvalificeret navn, fulde navn, det er navnet på en klasse, funktion eller konstant uden at medtage en henvisning til en namespace overhovedet.hvis du er ny namespacing er dette synspunkt, du er vant til at arbejde ud fra. <?php namespace myproject; klasse myclass (statisk funktion static_method() (echo 'hallo, verden! ";) //fulde navn, løser de namespace du er i øjeblikket (myproject. myclass) myclass: static_method(); kvalificeret navn, det er, hvordan vi adgang ubåden namespace hierarki; det gør brug af backslash notation. <?php namespace myproject kræve "myproject /database /forbindelse. php; //kvalificeret navn, instantiating klasse fra en ubåd namespace af myproject $forbindelse = ny database. connection(). nedenstående eksempel kaster en fatal fejl:" fatal fejl: klasse "myproject. database. myproject. fileaccess input" findes ikke. "for myproject. fileaccess. input, nærmede sig relativt til namespace du er i øjeblikket. <?php namespace myproject. database kræver "myproject /fileaccess /input. php; //forsøger at få adgang til myproject. fileaccess. input - klasse $input = nye myproject. fileaccess. input();, fuldt kvalificeret navn, ukvalificeret og kvalificeret navne er både i forhold til namespace du er i øjeblikket.de kan kun anvendes til at få adgang til definitioner på dette niveau, eller at dykke dybere ned i namespace hierarki.,, hvis du ønsker at få adgang til en funktion, klasse eller faste bopæl på et højere niveau i hierarkiet, så er du nødt til at bruge fuldt kvalificeret navn - - en absolut vej snarere end en slægtning.det kan koges ned til prepending dit opkald med backslash 9.dette giver php, ved, at dette skal løses ud fra det globale område i stedet for nærmer sig det relativt. <?php namespace myproject. database kræver "myproject /fileaccess /input. php; //forsøger at få adgang til myproject. fileaccess. input - klasse //nytter det denne gang, fordi vi bruger fuldt kvalificeret navn, bemærker den førende backslash 9 $input = nye. myproject. fileaccess. input(); det er ikke påkrævet at anvende den fuldt kvalificeret navn på interne php funktioner.kalder en, fulde navn, for en konstant eller funktion, som ikke findes i namespace arbejdes der i øjeblikket på resultater i folkesundhedsprogrammet efter de globale namespace for dem.det er en indbygget reserve, som ikke finder anvendelse på udelte klasse navne. med dette in mente, vi nu kan overbelaste indre php funktioner, samtidig med at kunne kalde den oprindelige funktion (eller konstant for den sags skyld). <?php namespace myproject; var_dump ($spørgsmål); //overbelastet. var_dump ($spørgsmål); //indre //vi ønsker adgang til den globale undtagelse klasse //følgende vil ikke arbejde, fordi der er ingen klasse, som hedder undtagelse i myproject. database namespace og ubetinget klasse navne ikke har en alternativ til global rum //kaster ny undtagelse ('query fejlede! «); //i stedet bruger vi en enkelt backslash 9 viser, at vi ønsker at løse globale rum kaete nyt. undtagelse ('ailed! "); funktion var_dump() (echo "overlæsset globale var_dump()!< br /> '}, dynamisk opkald, folkesundhedsprogrammet er en dynamisk programmeringssprog, så du kan også anvende denne funktion for at namespaced kode.det er stort set det samme som instantiating variable klasser eller herunder variable filer.attributterne namespace separator php anvendelser er også en meta karakter i trådene.glem ikke at undslippe backslash 9, når du opbevarer en namespace navn i en snor., <?php namespace otherproject. $project_name = myproject. $package_name = "database". $class_name = "forbindelse"; //omfatter et variabelt fil kræver strtolower ($project_name. "/«.package_name dollars. "/«.$class_name).. på; //navn af en variabel klasse i en variabel namespace.bemærk, hvordan backslash 9 er flygtet til at anvende det korrekt $fully_qualified_name = $project_name. "¶ ¶ ".package_name dollars. "¶ ¶ ".$class_name. $forbindelse = nye $fully_qualified_name();,, namespace, nøgleord, ikke kun er de namespace, nøgleord, der anvendes til at definere en namespace, det kan også anvendes til udtrykkeligt at løse den nuværende namespace, funktionelt ligner den, selv, nøgleord for klasse. <?php namespace myproject; funktion run() (echo 'flugt fra en namespace! ";) //vedtager at myproject. løb run(); //udtrykkeligt vedtager at myproject. løb namespace. run();,, __namespace__, konstant, ligesom de selv, nøgleord, ikke kan anvendes til at bestemme, hvad den nuværende klasse hedder, namespace, nøgleord, ikke kan anvendes til at bestemme, hvad den nuværende namespace er.det er derfor, vi har, __namespace__, konstant. <?php namespace myproject. database; //myproject. database echo __namespace__; denne konstante er meget nyttigt for læring, hvis du lige er startet med namespaces; det er også nyttigt for fejlfinding.det er en snor, kan det også anvendes i kombination med dynamiske kodeks kræver, som vi tidligere har drøftet, aliasing eller importerer, "det er ikke en forpligtelse til at anvende namespacing", namespacing i folkesundhedsprogrammet er støtte til import.importen er også nævnt, aliasing,.kun klasser, grænseflader og namespaces kan være aliased eller importeres., import, er et meget nyttigt og grundlæggende aspekt af namespacing.det giver dig mulighed for at gøre brug af eksterne kode pakker, som biblioteker, uden at skulle bekymre sig om modstridende navne.importerende opnås ved at anvende de, anvendelse, nøgleord.eventuelt kan de angive en sædvane, alias med, som nøgleord. brug [navn på klasse, grænseflade eller namespace] [optional_custom_alias), hvordan det skal gøres, en fuldt kvalificeret navn kan være aliased en kortere fulde navn, så du ikke behøver at skrive sin fuldt kvalificeret navn, hver gang du vil at gøre brug af den.aliasing eller import i forbindelse med de højeste rækkevidden af en namespace eller i den globale rækkevidde.forsøger at gøre dette inden for rammerne af en metode eller funktion er ugyldig, syntaks. <?php namespace otherproject; //den har myproject. database namespace med en forbindelse klasse i det kræver "myproject /database /forbindelse. php; //, hvis vi ønsker at få adgang til den database, forbindelse af myproject, er vi nødt til at bruge sin fuldt kvalificeret navn, som vi er i et andet navn til $forbindelse = nye. myproject. database. connection(); //import forbindelsen klasse (det er præcis det samme med grænseflader) anvendelse myproject (database) forbindelse; //det virker også.før den forbindelse klasse var aliased php ville ikke have fundet en otherproject \\ forbindelse klasse $forbindelse = nye connection(); //import myproject. database namespace anvendelse myproject. database $forbindelse = ny database. connection(), du kan også alias til et andet navn:, <?php namespace otherproject kræve "myproject /database /forbindelse. php; anvendelse myproject. database) forbindelse, som myconnection. $forbindelse = nye myconnection(); anvendelse myproject. database, som mydatabase. $forbindelse = nye mydatabase. connection();, du er også tilladt at importere globale klasser, som den undtagelse, klasse.da importeret, du behøver ikke skrive en fuldt kvalificeret navn mere. bemærk, at importere navne ikke er løst i forhold til de nuværende namespace, men fra en absolut set fra de globale rum.det betyder, at en førende backslash 9 er unødvendigt og ikke anbefales. <?php namespace myproject; //fatal fejl: klasse "someproject. undtagelse" ikke smide nye undtagelse (en undtagelse. '); //ok!smid nye ¶ undtagelse (en undtagelse. '); //import global undtagelse. "undtagelse er løst fra en absolut synspunkt er den førende backslash 9 er unødvendig brug undtagelse; //ok!smid en ny undtagelse (en undtagelse. ')og, selv om det er muligt at dynamisk kalder namespaced kode, dynamiske import ikke støttes, <?php namespace otherproject. $parser = nedskrives; //det er gyldigt på kræver "myproject /blog /parser /«.parser dollars. ". på; det er ikke anvendelse myproject //en blog. parser. $parser;,, konklusioner, namespacing anvendes til at undgå modstridende definitioner og indføre mere fleksibilitet og tilrettelæggelse i din kode base.kan du huske, at du ikke er forpligtet til at anvende namespacing; det er et element, der anvendes i kombination med et objekt orienterede arbejdsgang.jeg håber, du vil overveje at tage din (fremtidige) php projekt til næste niveau ved at gøre brug af namespacing.har du besluttet endnu?,