Skocz do zawartości

Problem z odwołaniem w klasie


S3ntin3l

Rekomendowane odpowiedzi

Witam

Mam problem z odwołaniem się jednej klasy do drugiej. Są to moje początki w obiektowym pisaniu, więc problem może okazać się banalny.

Posiadam takie dwie klasy - pierwsza 'Mysql', a druga 'Pager' (jedna utworzona w zmiennej $sql, a druga w $pager).

Chciałem wykonać coś takiego:

<?php
class Pager
{

   var  (......)

   function __construct($tabela,$obecnastrona,$limit,$url)
   {
		  global $sql;
		  $sql->cache('ile');
				  $sql->query('select count(id) from newsy');
				  $wszystkie=$sql->rows['count(id)'];
		  $sql->cache();
   }

}
?>

i tutaj wywala mi błąd Call to undefined method sql::cache(), wszystko przez to, że wywołuję $sql wewnątrz klasy (dlatego global $sql nie pomaga). Użyłbym extends, ale $sql zostało utworzone wcześniej wraz z konstruktorem połączenia do bazy ( $sql= new sql_connect('host','user','pass','baza'); ). Czy w jakiś sposób mogę wywołać $sql wewnątrz funkcji klasy Pager?

Odnośnik do komentarza
Udostępnij na innych stronach

Przecież możesz w konstruktorze przekazać zmienną $sql

class Page
{
  private $sql;
 public function __construct(sql_connect $_sql, $dalszezmienne) // Z Wymaganiem typów
 {
	$this->sql = $_sql;
 }
}

$sql= new sql_connect('host','user','pass','baza');
$Page = new Page($sql, $dalszezmienne );

lub:

$Page = new Page(new sql_connect('host','user','pass','baza'), $dalszezmienne );

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

zrobiłem coś takiego:

$sql = new sql('localhost', 'root', '', 'baza');
$pager = new Pager($sql,'newsy', $strona, ILE_NEWS,$url);

<?php
class Pager
{

   var  (......)
   private $sql;
   public function __construct(sql $_sql, $tabela,$obecnastrona,$limit,$url)
   {
		  $this->sql = $_sql;
		  $this->sql->cache('ile');
				  $this->sql->query('select count(id) from '.$tabela.'');
				  $wszystkie=$this->sql->rows['count(id)'];
		  $this->sql->cache();
   }

}
?>

i wyświetla mi "Call to undefined method sql::cache()". Nie wiem czy można używać odwołań typu $this->cos->cos(); , ale to chyba nie przez to.

@Maximus Marius

w mojej książce nie było opisu takich przypadków :lol: nie mniej jednak php uczyłem się głównie w praktyce metodą prób i błędów.

Odnośnik do komentarza
Udostępnij na innych stronach

Masz metodę cache() w ogóle zdefiniowaną w klasie ?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności