Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wywołanie funkcji
Fred1485
post 16.03.2015, 16:22:47
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

Ostrzeżenie: (0%)
-----


Mam przykładowy kodzik:

  1. <?php
  2.  
  3. function pisz() {
  4.  
  5. $zmienna = 1;
  6. $zmienna2 = 2;
  7.  
  8. return ($zmienna + $zmienna2);
  9.  
  10. } // nie chodzi o sam kod, jest on tylko przykładowy biggrin.gif
  11. ?>


I teraz w dokumencie php chcąc tą funckję wywołać to muszę przykładowo pisz();

Pytanie czy da się zrobić tak żeby funkcja była wywołana wtedy gdy jest umieszczona w kodzie bez tego wywoływania (np pisz();)czy za każdym razem trzeba to zrobić?

Ten post edytował Fred1485 16.03.2015, 16:23:33


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 19)
johny_s
post 16.03.2015, 16:24:53
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.function-exists.php
Go to the top of the page
+Quote Post
Fred1485
post 16.03.2015, 16:41:46
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

Ostrzeżenie: (0%)
-----


Ale ja nie chcę sprawdzać czy funkcja została wywołana tylko przy jej definiowaniu ją "od razu" samoistnie wywołać biggrin.gif


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
johny_s
post 16.03.2015, 16:47:56
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


aaa, to było jaśniej wink.gif

to w pliku ktorym ja definiujesz od razu daj jej wywołanie
Go to the top of the page
+Quote Post
maki1234
post 16.03.2015, 16:54:00
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 16.01.2015

Ostrzeżenie: (0%)
-----


Ale tez muszę ją wywołać ręcznie? Nie mogę w funkcji zaznaczyc zeby sie wywołała? Wiem że to trochę dziwne co mówię
Go to the top of the page
+Quote Post
Tuminure
post 16.03.2015, 16:58:42
Post #6





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Cytat
Ale tez muszę ją wywołać ręcznie? Nie mogę w funkcji zaznaczyc zeby sie wywołała? Wiem że to trochę dziwne co mówię

Deklaracja funkcji nie uruchamia jej. Zastanawia mnie, czemu nie możesz po prostu użyć po prostu "pisz();"?
Go to the top of the page
+Quote Post
johny_s
post 16.03.2015, 17:00:33
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


możesz pobrać wszystkie funkcje
http://php.net/manual/en/function.get-defined-functions.php
php samo z siebie nie wywołuje wszystkich możliwych funkcji
Go to the top of the page
+Quote Post
maki1234
post 16.03.2015, 17:08:15
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 16.01.2015

Ostrzeżenie: (0%)
-----


No mogę mogę ale tak mnie to zastanawiało smile.gif troszkę patrzylem w kody cms i tak nie zauważyłem jak wywołują ale deklarują musze to dokladniej przeanalizować wink.gif dzięki
Go to the top of the page
+Quote Post
Mariner
post 16.03.2015, 17:16:18
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 6
Dołączył: 26.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(maki1234 @ 16.03.2015, 16:54:00 ) *
Ale tez muszę ją wywołać ręcznie? Nie mogę w funkcji zaznaczyc zeby sie wywołała? Wiem że to trochę dziwne co mówię


Nie można wywołać funkcji bez jej wywołania. A jeżeli wywołanie funkcji umiejścisz w jej ciele to powstanie nieskończona pęta.
To co piszesz świadczy o błędnym sposobie podejścia do konstruowania skryptów. Jest to niezgodne z zasadami sztuki mówiącymi chociażby o wielokrotnym wykorzystaniu tego samego kodu. Deklaracji funcji i innego kodu nie umieszczaj w miejscu jej wywołania ale w bibiotekach. Inaczej powstaje chaos.

Cytat(maki1234 @ 16.03.2015, 17:08:15 ) *
No mogę mogę ale tak mnie to zastanawiało smile.gif troszkę patrzylem w kody cms i tak nie zauważyłem jak wywołują ale deklarują musze to dokladniej przeanalizować wink.gif dzięki


Być może używają wywołań funkcji w sposób nieliteralny nie np. "pisz()" tylko np. $functionPisz() ale na pewno ten cms nie działa to w taki sposób że deklaracja fukcji wywołuje ją w miejscu jej deklaracji.
Go to the top of the page
+Quote Post
maki1234
post 16.03.2015, 17:20:25
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 16.01.2015

Ostrzeżenie: (0%)
-----


Czyli najlepiej utworzyc jakis plik np functions.php i tam wszystkie funkcje trzymać?
Go to the top of the page
+Quote Post
robertpiaty
post 16.03.2015, 17:22:29
Post #11





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

Ostrzeżenie: (0%)
-----


Funkcję można też wywołać np. tak
http://php.net/manual/en/function.call-user-func.php


--------------------
Go to the top of the page
+Quote Post
trueblue
post 16.03.2015, 17:25:22
Post #12





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Możesz wywołać funkcję anonimową, podobnie jak w JS: (function(){alert(1);})();

  1. call_user_func(function(){
  2. echo '1';
  3. });

Tylko jaki to ma sens...


--------------------
Go to the top of the page
+Quote Post
johny_s
post 16.03.2015, 17:26:35
Post #13





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


Cytat(Mariner @ 16.03.2015, 17:16:18 ) *
A jeżeli wywołanie funkcji umiejścisz w jej ciele to powstanie nieskończona pęta.

To jest tzw. wywołanie rekurencyjne i nie zawsze oznacza nieskończoną pętlę


Cytat(maki1234 @ 16.03.2015, 17:20:25 ) *
Czyli najlepiej utworzyc jakis plik np functions.php i tam wszystkie funkcje trzymać?

nie, bo po jakimś czasie Ci się plik rozrośnie i nagle zauważysz że ma kilkadziesiąt/set funkcji
pogrupować w pliki "tematycznie" czyli klasy -> doczytać oop

Ten post edytował johny_s 16.03.2015, 17:27:16
Go to the top of the page
+Quote Post
maki1234
post 16.03.2015, 17:34:14
Post #14





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 16.01.2015

Ostrzeżenie: (0%)
-----


Moglbys coś wiecej o tych klasach? Jakis artykułl o tym czy cos? Nie mysl ze czekam na gotowe ale na razie nie wiem dokladnie co za "czarna magia" to jest "(
Go to the top of the page
+Quote Post
Mariner
post 16.03.2015, 17:34:24
Post #15





Grupa: Zarejestrowani
Postów: 47
Pomógł: 6
Dołączył: 26.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(maki1234 @ 16.03.2015, 17:20:25 ) *
Czyli najlepiej utworzyc jakis plik np functions.php i tam wszystkie funkcje trzymać?


Zgasza się.
Wyobraź sobie co musiał byś zrobić kiedy będziesz chciał użyć funkcji "pisz" ponowanie w jakimś innym miejscu, jeżeli zadeklarujesz ją np. w pliku szalobnu. Iportować szablon html żeby wywołać funkcję? Totalna pomyłka. Lepszym rozwiązaniem jest kiedy deklaracje funcji umiesza się w jednym pliku np. functions.php który pełni rolę bibioteki i inludować tylko zawsze ten sam plik zawsze kiedy potrzebujesz użyć zadeklarowanych w nim funkcji. Między innymi dlatego język jest tak skonstruowany bo zakłada takie własnie użycie.
Go to the top of the page
+Quote Post
Fred1485
post 16.03.2015, 17:40:23
Post #16





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

Ostrzeżenie: (0%)
-----


Mariner,

Cytat
nie, bo po jakimś czasie Ci się plik rozrośnie i nagle zauważysz że ma kilkadziesiąt/set funkcji
pogrupować w pliki "tematycznie" czyli klasy -> doczytać oop


W takim razie jak się do wypowiedzi kolegi ustosunkujesz?


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Mariner
post 16.03.2015, 17:45:17
Post #17





Grupa: Zarejestrowani
Postów: 47
Pomógł: 6
Dołączył: 26.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(maki1234 @ 16.03.2015, 17:34:14 ) *
Moglbys coś wiecej o tych klasach? Jakis artykułl o tym czy cos? Nie mysl ze czekam na gotowe ale na razie nie wiem dokladnie co za "czarna magia" to jest "(


To o co pytasz to programowanie obiektowe. O programowaniu obiektowych w php jest dużo w necie, nie problem znaleźć. Niemniej jest to jedna z najbardziej istotnych kwestii i podstawa pracy programisty. Także obowiązkowo musisz znać i posługiwac się programowaniem obiektowym.

Cytat
W takim razie jak się do wypowiedzi kolegi ustosunkujesz?


Żeby organizować funckje w klasy wpierw trzeba znać przeznaczenie tych funkcji. Wobec zadanego pytania, czy deklaracje umieszczać w miejscu wywołania, wystarczającą informacją jest to że należy trzymać kod w plikach bioblitecznych a czy ma to być tylko jeden plik oraz czy ma zwierać klasy zamiast funkcji, to kwestia względna i w tym pytaniu zdaje się nie istotna.

Cytat
To jest tzw. wywołanie rekurencyjne i nie zawsze oznacza nieskończoną pętlę


Naprawdę? A gdzie jest napisane że "zawsze oznacza"?

Ten post edytował Mariner 16.03.2015, 18:09:37
Go to the top of the page
+Quote Post
Fred1485
post 16.03.2015, 17:51:56
Post #18





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

Ostrzeżenie: (0%)
-----


O programowaniu obiektowym słyszałem i też go troszkę już próbuję wink.gif Ale jak to się ma do tego pliku functions.php z wszystkimi funkcjami? Kolega wyżej napisał że to zły pomysł bo się plik rozrośnie do wielu linijek kodu...


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Mariner
post 16.03.2015, 18:27:51
Post #19





Grupa: Zarejestrowani
Postów: 47
Pomógł: 6
Dołączył: 26.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
O programowaniu obiektowym słyszałem i też go troszkę już próbuję wink.gif Ale jak to się ma do tego pliku functions.php z wszystkimi funkcjami? Kolega wyżej napisał że to zły pomysł bo się plik rozrośnie do wielu linijek kodu...


Duże partie kodu bibiotecznego umieszcza się w róznych plikach ze względów wydajnościowych, żeby nie ładować funkcji których nie potrzebujemy. Odpowiedź kolegi, o wielu plikach bibiotecznych opiera się na złozeniu że będziesz miał dużo funkcji. Ja tego nie wiem ile masz funkcji. Starałem się przedstawić Tobie jedynie tylko koncepcję mówiącą że deklarację umiejszczamy w bibiotekach a czy będzie to jeden plik czy wiele kwestia względna zależy od Ciebie.

W dużej ilość funcji faktycznie dobrym pomysłem jest ich podzielenie na plikich wedłuch spełnianych przez nie zadań. Np. wszystkie funkcje odpowiedzialne za komunikację z bazą umieszczamy w pliku functions_db.php, funkcje odpowiedzialne za przetwarzenie html functions_helper.php i tak dalej. Wtedy mamy łatwe rozeznanie który plik w danym momencie mamy zaincludować. I tak, jak wykonujemy update bazy danych to includujemy plik z funkcjami odpowiedzialnymi za komunikację z bazą danych, jak obrabiamy gdzieś html to potrzebuemy plik tylko z funkcjami odpowiedzialnymi za html. Zauważ że dzięki temu nie ładujemy wszystkich fukcji, osczędzając dzięki temu pamięć i nie obciążając serwer.
Z drugiej zaś strony jezeli masz np. tylko dwie funkcje to jaki jest sens umieszczania ich w osobnych plikach? Chyba żaden. Lepiej umieścić je w jednym pliku.
Tak to generalnie w skrócie wygląda.
Go to the top of the page
+Quote Post
Boshi
post 16.03.2015, 18:31:05
Post #20





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

Ostrzeżenie: (0%)
-----


Cytat(Mariner @ 16.03.2015, 17:45:17 ) *
Naprawdę? A gdzie jest napisane że "zawsze oznacza"?


Napisałeś to tak jak by zawsze wywoływało nieskończoną pętlę... precyzuj albo nie pisz głupot.


@autor, możesz pogrupować sobie w foldery odpowiednie biblioteki funkcyjne, wtedy łatwiej się odnaleźć we wszystkim.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:05