Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OO]używanie klasy w innej klasie
Forum PHP.pl > Forum > PHP
Bielo
Mam klasę do obsługi mysql'a.
jeśli nie powiedzie się mysqli_connect chcę żeby z klasy template uruchamiał metodę message.
[php:1:49ad7b6990]<?php
//w klasie database
$this->database_link=mysqli_connect($host,$user,$password,$dbname) or template::message("Nie mogę się połączyć z bazą danych!");
?>[/php:1:49ad7b6990]

Tylko że template::message nie działa i chcę się dowiedzieć co powinienem zrobić zamiast tego??

Kuiedyś rozwiązałem to w ten sposób że do klasy obsługi mysql'a dodawałem handler do template engine'a, ale to było trochę nie wygodne bo musiałem includować pliki z klasami w odpowiedniej kolejności
Dravo
hmm a dolaczyles klase 'template'?
Jeśli szybko potrzebujesz coś rozwiązać i nie zależy ci na najlepszej jakości to możesz rozwiązać to na wiele sposobów...pokombinuj...
Bielo
zrobiłem to tymczasowo w ten sposób[php:1:bec414011a]<?php
function __construct()
{
global $tpl;
$this->template_engine=$tpl;
}

?>[/php:1:bec414011a]

Ale myślę, że jest jeszcze jakieś lepsze rozwiązanie słyszałem coś o :: (dwóch dwukropkach), ale nie wiem jak działają
Ozzy
metoda message musi być zadeklarowana jako statyczna:
[php:1:617616949a]<?php
public static function message ()
?>[/php:1:617616949a]
Bielo
I jak się teraz powinienem do niej odwoływać??
Skopi
[php:1:5e7d1bf633]<?php
class temple{
function cos(){}
}
class db extends temple {
function db(){
parent::cos(); (lub) $this -> cos();
}
}
?>[/php:1:5e7d1bf633]

Ja sie zastanawialem ktore rozwiazanie jest wlasciwsze parent::cos() czy $this -> cos(), oba dzialaja w tym przypadku.
Bielo
tylko ze chodzi o to zo to sa 2 oddzelne klasy
Ozzy
tak jak przedtem
[php:1:98ef3aa56a]<?php
template::message
?>[/php:1:98ef3aa56a]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.