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 *
V tom class mám samozřejmě třídy, ale nechtělo se mi to zde celé vypisovat.
bohyn
Profil
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 *
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 *
Tak už jsem to "hackl"

function html4head($title=""){
  global $filmy;
  echo $filmy->menu();
  echo $title;
}


Díky.
Majkl578
Profil
[#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 *
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 *
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
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 *
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 *
Vůbec nechápu, jak se mohu takové banální chyby dopustit.
fuckin
Profil
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ě.

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:

0