Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Automatyczne dodawanie argumentów do funkcji
kłulik
post 21.02.2006, 20:26:37
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.01.2005
Skąd: Copa Cabana

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


Deklaracja funkcji
  1. <?
  2. function funkcja($arg, $line, $file){
  3. //...
  4. }
  5. ?>


Wywołanie funkcji:
  1. <?
  2. funkcja('cośtam', __LINE__, __FILE__);
  3. ?>


Mój problem polega na tym, że chce zrobić żeby stałych __LINE__ i __FILE__ nie trzeba było wpisywać przy każdym wywołaniu funkcji.
Chcę funkcję wywołać w ten sposób: funkcja('cośtam'); a __LINE__ i __FILE__ zostały dodane automatycznie.
Go to the top of the page
+Quote Post
Neotion
post 21.02.2006, 20:37:17
Post #2





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 13.09.2004

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


hymhym....

Stosujesz coś takiego:

  1. <?
  2. function funkcja($arg, $line=NULL, $file=NULL){
  3.    if(is_null($line))
  4.       $line = __LINE__;
  5.    if(is_null($file))
  6.       $file = __FILE__;
  7.  
  8. // itd....
  9.  
  10. }
  11.  
  12. ?>


Pomogłem?

Ten post edytował Neotion 21.02.2006, 20:38:00


--------------------
current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)

workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse)
Go to the top of the page
+Quote Post
tiraeth
post 21.02.2006, 21:03:19
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Neotion, Twój przykład nie zadziała... zwróci numer linii w tej funkcji (np. 4) a nie numer linii, gdzie ta funkcja została użyta... niestety, te dwie stałe trzeba za każdym razem włączać do funkcji jako argumenty...
Go to the top of the page
+Quote Post
kłulik
post 21.02.2006, 21:18:08
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.01.2005
Skąd: Copa Cabana

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


Cytat(Neotion @ 2006-02-21 21:37:17)
Pomogłem?

NIE smile.gif

Na coś takiego wpadłem odrazu, ale szybko zniechęciłem się z powodów jakie podał @tiraeth
Go to the top of the page
+Quote Post
Neotion
post 21.02.2006, 21:33:32
Post #5





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 13.09.2004

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


No tak sorka sad.gif

Nie zwrovilem wogole uwagi na to że __LINE__ jest predefiniowane.

Przepraszam.


--------------------
current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)

workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse)
Go to the top of the page
+Quote Post
anopak
post 21.02.2006, 23:15:27
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


może debug_backtrace()


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
NetJaro
post 21.02.2006, 23:33:34
Post #7





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


a może
Kod
<?php function($arg, $line = '__LINE__', $file='__FILE__') [..] ?>
chociaż sądze, że poprzednicy by na to wpadli.. chyba nie zadziała..
Go to the top of the page
+Quote Post
Termit_
post 22.02.2006, 10:19:41
Post #8





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.06.2005
Skąd: Gostyń

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


NetJaro: a po co mu string '__LINE__'? smile.gif


--------------------
@nospor: trzymajcie się. Wszystko będzie dobrze!
Go to the top of the page
+Quote Post
anopak
post 22.02.2006, 10:36:30
Post #9





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


  1. <?
  2. function getBacktrace(){ return array_pop(debug_backtrace()); }
  3.  
  4. function ab(){
  5. echo '<pre style="text-align:left">'.print_r(getBacktrace(),true).'</pre>';
  6. }
  7.  
  8.  
  9.  
  10. ab();
  11. ?>


Wynik:
Kod
Array
(
    [file] => D:\test.php
    [line] => 10
    [function] => ab
    [args] => Array
        (
        )

)



Masz przykład użycia debug_backtrace(). To jest chyba najlepsze rozwiązanie, jeżeli chodzi o znajdywanie błędu (a o to tutaj chyba własnie chodzi)....

Ten post edytował anopak 22.02.2006, 10:36:57


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post

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: 29.06.2025 - 14:51