Autor | Zpráva | ||
---|---|---|---|
radvis Profil * |
Snažím se zavolat tridu filmy a medotu menu(), ale nedaří se mi to. Dával jsem i Filmy::menu() a pod, ale stále nic. Nejspíš je i špatná struktura:
public - class - core - main.php (soubor, ktery se includuje vsude) - _logout.php - img - js index.php a pod... <?php session_start(); //nadefunujeme cestu k třídám require_once (dirname(__FILE__).'/../config.inc.php'); require_once (dirname(__FILE__).'/../classes/MyDb.php'); require_once (dirname(__FILE__).'/../classes/Filmy.php'); require_once (dirname(__FILE__).'/../classes/Users.php'); require_once (dirname(__FILE__).'/../classes/Serialy.php'); //nadefinujem si třídy $filmy = new Filmy; $user = new Users; $serialy = new Serialy; //hlavička webu function html4head($title=""){ //zde bych potreboval $filmy->menu(); var_dump($filmy); exit; echo $title; } Moderátor Chamurappi: Doplnil jsem čárku do titulku, jelikož „vysat“ nic neznamená.
|
||
radvis Profil * |
#2 · Zasláno: 27. 4. 2010, 17:41:51
V tom class mám samozřejmě třídy, ale nechtělo se mi to zde celé vypisovat.
|
||
bohyn Profil |
#3 · Zasláno: 27. 4. 2010, 18:36:12 · Upravil/a: bohyn
radvis:
Doporučuju si přečíst neco o rozsahu platnosti proměnných. Možností jak to udělat několik: - předat třídu jako parametr function html4head($filmy, $title=""){ $filmy->menu(); echo $title; } - použít superglobální pole $GLOBALS function html4head($title=""){ $GLOBALS['filmy']->menu(); echo $title; } - nebo zastaralá metoda function html4head($title=""){ global $filmy; $filmy->menu(); echo $title; } |
||
radvis Profil * |
#4 · Zasláno: 27. 4. 2010, 18:40:59
No jasně, tu první věc jsem dělal, ale nejde, píše mi to:
Notice: Undefined variable: filmy in D:\wamp\www\new\web\core\main.php on line 29 Fatal error: Call to a member function menu() on a non-object in D:\wamp\www\new\web\core\main.php on line 29 A když to vypíšu nad tím "html4head($title="")" tak to jde. |
||
radvis Profil * |
#5 · Zasláno: 27. 4. 2010, 18:44:41
Tak už jsem to "hackl"
function html4head($title=""){ global $filmy; echo $filmy->menu(); echo $title; } Díky. |
||
Majkl578 Profil |
#6 · Zasláno: 27. 4. 2010, 18:51:54 · Upravil/a: Majkl578
[#5] radvis:
To jsi to teda hackl. Doporučuji vyhledat literaturu o tom, jak správně používat OOP. Zdá se mi (a nejspíš to ani není zdání), že třídy používáš jako jmenné prostory sjednocující funkce. To pak není žádné OOP. Kdyby jsi alespoň měl nějaký statický registr instancí nebo něco obdobného. Ale global... |
||
radvis Profil * |
#7 · Zasláno: 27. 4. 2010, 18:58:37
Ano, určitě mám literaturu v plánu. Nezlobyl bych se, kdyby jsi mi něco doporučil. V oop opravdu dost lítám a je načase stím něco udělat.
|
||
radvis Profil * |
#8 · Zasláno: 27. 4. 2010, 19:31:42
Není to nic k té metodě, ale nechci zakládat další vlákno:
$_zanry = $this->mysql->queryObject("SELECT * FROM kat_filmy WHERE filmy = '".$filmy->id."'"); foreach ($_zanry as $_sekce){ $kategorie .= '<p class="zanr"><strong>Žánr:</strong>'; $kategorie .= $_zanry->kategorie; $kategorie .= '</p>'; } když si vypíšu $_zanry tak to vrátí co má tak jsem zkoušel $_zanry->kategorie, ale nic, prej to není objekt tak jsem to dal do foreach a to vyíše místo třeba 5ti kategorii tak jen 1. |
||
AM_ Profil |
#9 · Zasláno: 27. 4. 2010, 23:52:35
radvis:
„Ano, určitě mám literaturu v plánu“ nejdřív se uč a pak programuj, naopak to pak dopadá takhle :) Ten hack je příšerný, správné řešení je předávat $filmy jako parametr. „Není to nic k té metodě, ale nechci zakládat další vlákno:“ Proč? založit nové vlákno je moc náročné? Tak ať si raději všichni počtou v již vyřešeném problému, než se dopracují k poslednímu příspěvku? > foreach ($_zanry as $_sekce){ > $kategorie .= '<p class="zanr"><strong>Žánr:</strong>'; > $kategorie .= $_zanry->kategorie; > $kategorie .= '</p>'; > } pořádně se podívej na ten foreach, jistě ti na něm přijde něco divné (nápověda: $_sekce). Toto fórum má sloužit k pomoci pochopení programování v PHP a řešení různých nestandardních úloh, a nikoli začátečníkům opravovat chyby z nepozornosti. |
||
radvis Profil * |
#10 · Zasláno: 28. 4. 2010, 17:26:45
Jo, už jsem si všiml, omlouvám se. Není to složité, ale nechtšl jsem zakladat zbytečně téma. Nejlepší učení je praxí :).
|
||
radvis Profil * |
#11 · Zasláno: 28. 4. 2010, 18:33:54
Vůbec nechápu, jak se mohu takové banální chyby dopustit.
|
||
fuckin Profil |
#12 · Zasláno: 30. 4. 2010, 16:03:08
radvis:
„Nejlepší učení je praxí :).“ Ano, ale musíš umět první teorii aby jsi to mohl aplikovat v praxi. Bez teorie to pak dopadá dosti špatně, začneš mít špatné návyky a podobně. |
||
Časová prodleva: 14 let
|
0