Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Odwołanie się do prywatnej metody


PawelS

Rekomendowane odpowiedzi

Witajcie, napotkałem problem przy odczycie wartości prywatnej metody.

Coś gdzieś pomyliłem i teraz szukam błędu.

Fatal error: Call to a member function errors() on a non-object in register.php on line 76

 

76 linijka to:

print_r($valid->errors());

Próbowałem już się bawić z kodem, ale żadnych nowych rezultatów prócz kolejnych błędów null, not static itd.

Może ktoś z Was wie jak to ominąć lub nakieruje mnie bym to rozwiązał.

 

Zostawie 2 pliki z najważniejszymi w tym fakcie funkcjami.

 

Valid.php:

<?php
class Valid {
	private 
		$_errors = array();
		...
		...

	public function check {$data, $requires = array()} {
		....
		....
		if ($rule = 'required' && empty($value)) {
			$this->addError("{$require} jest wymagany!");
		} else {
			...
		}

		if (empty($this->_errors)) {
			$this->_success = true;
		}
	}

	private function addError($error) {
		$this->_errors[] = $error;
	}

	public function errors() {
		return $this->_errors;
	}
}
?>

Oraz plik wypisu:

<?php
require_once( './Valid.php');

class Register {
	
	function Show()
	{
		$validate = new Valid();

		...
		...

	   	if ($validate->success) {
	   		echo 'ok';
	   	} else {
	   		print_r($validate->errors());
	   	}
	}
}

Wiem, że tak odwoływać się do metod prywatnych nie powinienem bo error gwarantowany, ale próbowałem też inaczej przesłać wartość do public i nic z tego..

W tym momencie on wykonuje funkcje $validate->errors() z klasy Valid a wartość jest zwracana w return do $this->_errors której już tu w klasie Register nie ma. Sorry za takie tłumaczenie, ale mam nadzieje że zrozumie ktoś i uda nam się to rozwiązać.

 

Z góry dzieki wielkie za pomoc :)

Edytowane przez PawelS
Odnośnik do komentarza
Udostępnij na innych stronach

Ups miało być odwołanie do prywatnej zmiennej, nie metody. Problem tkwi w tym, że zaczynam wchodzić głębiej w OOP.

Dziele pliki aby to miało ręce i nogi.

Mam główną klasę Core z której dzieje się wszystko inne co ma się dziać w danym momencie.

Tam wczytuje wszystkie inne główne klasy do których chcę się odwołać, czyli np.

require_once ('Valid.php')

require_once ('Register.php')

Większość klas odwołuje się do matki np klasa register (extends Core), bo jest to moduł silnika, że tak to nazwę,

Valid już nie odwołuje się do niczego, choć nawet gdy to zrobię to nie ma żadnych zmian i problem jest taki sam cały czas.

 

Macsch15, tak masz rację, do zmiennej mam accessor, i gdy wywołuje to z tej samej klasy to jest ok. Ale gdy robie to z klasy register to mam błąd podany w pierwszym poście.

Jeżeli nie uda nam się tego rozwiązać w ten sposób, przygotuję przykładowe pliki.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

U mnie to działa dobrze, bo jest dobrze.

 

Tutaj masz błąd w nawiasach:

public function check {$data, $requires = array()} {
public function check ($data, $requires = array())
  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

DawPi, to dlatego, że pisałem tu z troche z głowy, ogólnie tego problemu nie miałem, bym dostawał error wcześniej :P

Ogólnie to bardzo dziękuje za chęci, dzięki jej w trakcie przygotowywania paczuszki napotkałem się na mój błąd, a byl on taki że wczytałem klase linijke za późno.

Już śmiga :)

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • 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ę.