Autor Zpráva
nejdesemiprihlasit
Profil
Dobrý den, mám ještě malý problém na stránce mi píše chyba s redeklarací funkce.
Problém je v tom že soubor includuju 2x jednou ve funkci menu() a podruhé v sitebar().
Ovšem v obou funkcích je ona chybová funkce potřebná. někde jsem viděl řešení s if(isset(Contact_Labels)) {,
ale to mi spůsobí to že se mi importuje jen do jedné funkce, nebo vůbec. Je možné i jiné řešení tohoto problému ?
Kcko
Profil
a proč to includuješ 2x a ne jednou? Uprav logiku, tohle je totiž špatně.
nejdesemiprihlasit
Profil
v moment kdy to includnu do jedne funkce neprojevi se to v druhe. Bohužel mě nic jiného nenapadá.


a includovat to jednou a posílat 100 proměnných do druhé funkce je blbost
Keeehi
Profil
nejdesemiprihlasit:
v moment kdy to includnu do jedne funkce neprojevi se to v druhe.
Ale projeví. I když voláš include ve funkci, definice funkce není importovaná "jen" do té funkce ale je importovaná globálně. Stačí ji tedy jen jednou includnout a pak už jen používat. Zkus si tento test:
//inc.php
<?php

function foo () {
    echo "foo<br>\n";
}

//test.php
<?php

function bar() {
    include "inc.php";
    foo();
}

function baz() {
    foo();
}

bar();
baz();

A když už jsme u toho, proč to vůbec includuješ ve funkci? Prostě to includni jednou na začátku a máš to. Další možností by bylo použít require_once. No a vůbec nejlepší řešení by bylo použít objekty. Protože v takovém případě můžeš použít autoloading a při použití jakékoli dosud neimportované třídy se zavolá funkce, která ji může importovat. Takže se o includy nemusíš už nikdy starat. Jelikož vytváříš vlastní CMS, tak bych ti doporučil si vzít nějaký PHP framework (je jich spousta) a vytvořit to na něm. Spoustu základních věcí budeš mít už vyřešených a hlavně by tě to mělo vést správným směrem.
nejdesemiprihlasit
Profil
No s objekty zatím nemám moc zkušenosti a nevím ani moc jak classy fungují.
nejdesemiprihlasit
Profil
U toho příkladu mi pořád nedává smysl jedna věc:
v moment kdy do funkce foo dám definici a pak v bar a baz ji vyvolám tak se nic nestane.
//inc.php
<?php
 
function foo () {
    $addons_Contact_name = "Contact";
}
//test.php
<?php
function bar() {
    include "inc.php";
    foo();
    echo $addons_Contact_name;
}
 
function baz() {
    foo();
    echo $addons_Contact_name;
}
echo bar();
echo baz();
ServIT
Profil
nejdesemiprihlasit:
No, asi takto :

Chybná je logika sestavení toho tvého programu .. evidentně to takto fungovat nebude.

1) zduplikuj includovaný soubor a zmeň v jednom název funkce, nebude se to hádat a máš to nejjednodušší pro ten svůj postup. Je to ale fakt "programátorská lamárna".

2) Podumej nad jiným rychlým řešením ... vyhoď funkci z funkce, dej ji "ven" a posílej tam 100 argumentů .. nu což ..

3) použij zapouzdření objektu a dědičnost .. ( stejně k tomu nakonec dojdeš )

Ve svých začátcích jsem prožíval podobné vzpírání se objektům, a zuby-nehty se držel funkcí ... no už to mám naštěstí za sebou :-)

A mimochodem ... přehlednosti kódu funkce prospěje, pokud je zcela jasné, jaké parametry ji posíláš, a obcházet to vysávaním dostupných parametrů z nadřízené vrstvy povede jen k hromadění chyb

Jen můj názor. Ať se ti daří :-)
Keeehi
Profil
nejdesemiprihlasit:
v moment kdy do funkce foo dám definici a pak v bar a baz ji vyvolám tak se nic nestane.
To nebude fungovat ani kdyby se ta funkce neincludovala a dal jsi ji přímo do toho souboru. Proměnné definované uvnitř funkcí nejsou z venku vidět. Stejně jako to je u spousty jiných programovacích jazyků.
nejdesemiprihlasit
Profil
ServIT:
1)
Této lámárně jsem se právě chctěl vyhnout.
2)
Právě je problém v tom že nikdy nevím kolik modifikací na webu budu mít takže nemůžu proměnné předem nadefinovat.
3)
Opět OOP s čímž zatím neumím ani ň.

Nejde o to že bych se jim zuby nehty zvpíral stejně mě to v druháku čeká, ale jen nechci používat něco s čím neumím radši momentálně zůstanu u funkcí a postupne se to ve volném čase naučím, pak to předělám a pohoda.
Keeehi:
Proměnné definované uvnitř funkcí nejsou z venku vidět.
Ano to mi došlo ale v ten moment mě nenapadlo nic jiného než do každé funkce importovat úplně všechny soubory s nastavením co existovaly.


nakonec jsem to tedy vyřešil tím že jsem addonové funkce dal do speciálního souboru a icluduju ho jen v sekci administrace kde je využíván, jelikož v sekci Maily nepotřebuju funkce z článků a pod.


ale kvůli automatizace menu řeším ještě jeden problém.
zjištění jména složky z url

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: