![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czy możliwe jest stworzenie funkcji dla klasy poza jej obszarem?
Chciałbym stworzyć klasę: Kod <? class test { } ?> a potem dodac do niej funkcje, np: Kod function pisz() { print 'czesc'; } Można? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie. A zreszta sprawdz: w C++ robilo sie to tak:
Kod class Klasa
{ // tu chyba byl prototyp funkcji public function blabla(); } Klasa::public function blabla() { //.... } -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Można przez dziedziczenie
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 9.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
@dr_bonzo: w c++ to nie jest to jakiś specjalny sposób na dopisywanie metod do klasy. To po prostu zwyczajny sposób na zdefiniowanie metody - konieczny w przypadku, gdy chce się stworzyć metodę nie-inline
![]() Kod class Klasa {
public: void foo(); } void Klasa::foo() { cout << "Elo world"; } |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
@Ociu nie rozumiem co przez ten przyklad chciales pokazac.
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Bo mam taki problem.
Mam klasę engine tworzoną za pomocą singletonu (czy jak to tam się o tym mówi). Klasa ta posiada metodę run(); która uruchamia domyślne moduły. W plikach, np. download.php, guestbook.php muszą występować inne instrukcje uruchomienia modółów (tak ma być) dlatego tworzone są klasy (np. engine_download w pliku download.php) dziedziczące z klasy engine, które posiadają inne instrukcje w metodzie run();. Tu zaczyna się problem ponieważ klasy template, input itd. wymagane do pracy silnika/modułów tworzą sobie porzez singleton referencję do obiektu klasy engine. Jednak jak już powiedziałem w niektórych plikach (np. download.php) silnik będzie stworzony nie z klasy engine, ale z engine_download. Wieć obiekt "prawdziwy" silnika będzie engine_download, a np. klasa template zrobi sobie obiekt z klasy engine - będą dwa obiekty, a ja chcę by zawsze pracował jeden.
Jakieś pomysły? Ten post edytował tuner 3.04.2005, 12:47:13 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Da się, troszkę zakręcony sposób ale się da, szukaj w manualu funkcji overload().
Więcej w manualu. -------------------- code.gosu.pl
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ciekawy pomysł. Przemyślę całość rozwiązania, można znajdę jakieś inne rozwiązanie tego co chcę zrobić.
EDIT: Może po prostu zrobię metodę run(); poza klasą - nie będę musiał się bawić w tworzenie dziedziczonej klasy, co o tym myślicie? Ten post edytował tuner 3.04.2005, 15:41:17 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(tuner @ 2005-04-03 11:44:58) Wieć obiekt "prawdziwy" silnika będzie engine_download, a np. klasa template zrobi sobie obiekt z klasy engine - będą dwa obiekty, a ja chcę by zawsze pracował jeden.
EDIT: Kombinuje jak zrobić, żeby klasa tego rzędu co Engine_Download nie musiała implementować metody GetInstance(), ale nie bardzo wiem jak to zrobić... get_class coś nie bardzo chwyta i jak dam Engine_Download::GetInstace() to mimo wszystko zwraca 'Engine'. Najważniejsze, że podany przykład działa ![]() Ten post edytował Imperior 4.04.2005, 15:33:58 -------------------- Com powiedział, powiedziałem.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
SongoQ: mój błąd, na szybko przejrzałem temat.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
O cholera, działa! Imprerior dzięki!
![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 9.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
@Imperior: Ja też tak próbowałem, nawet ze stałą __CLASS__. Ale nie wyszło, nie odziedziczyło ;/
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 09:09 |