[php] Odwołanie do funkcji zagnieżdżonej w klasie

Przykładowa klasa:

class klasa

{

  public function funkcja1()

  {

    function funkcja1a()

    {

     return 'test01';

    }


   function funkcja1b()

    {

      return 'test02';

    }

  }

}


$c = new klasa();

// wywołanie funkcja1a

czy można wywołać z zewnątrz funkcję funkcja1a() czy można wyłącznie z fukncji funkcja1?

$c->funkcja1->funkcja1a();

zwraca błąd:

Fatal error: Call to a member function funkcja1a() on a non-object in /home/yaras/public_html/si/index.php

czy można jakoś inaczej ją wywołać?

pozdr, yaras.

stop, stop, stop. Od kiedy metoda klasy może zawierać funkcje?

Nie ma czegoś takiego jak funkcja w funkcji.

faktycznie, metoda klasy nie może zawierać funkcji.

ale funkcja w funkcji jest i działa jak najbardziej :wink:

eot

Złączono Posta : 04.07.2007 (Sro) 17:40

A jednak udało mi się zagnieździć klasę w klasie. Rozwiązanie to mnie jednak bardzo dziwi, no ale najpierw kod:

plik index.php:

class func1_class

	{

		var $func2;


		function __construct()

		{

			include 'func2.php';


			$this->func2 = new func2_class;

		}

	}


	$func1 = new func1_class();


	$func1->func2->Lorem();

plik func2.php:

class func2_class

	{

		public function Lorem()

		{

			echo 'Lorem';

		}

	}

Wbrew pozorom skrypt zadziała. W razie wątpliwości radzę samemu sprawdzić ;-). Skrypt natomiast nie działa jeśli w miejsce include wstawimy treść pliku func2.php - wie ktoś może dlaczego tak się dzieje?

pozdrawiam, yaras.