Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Automatyczne dodawanie argumentów do funkcji
Forum PHP.pl > Forum > PHP
kłulik
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.
Neotion
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?
tiraeth
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...
kłulik
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
Neotion
No tak sorka sad.gif

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

Przepraszam.
anopak
może debug_backtrace()
NetJaro
a może
Kod
<?php function($arg, $line = '__LINE__', $file='__FILE__') [..] ?>
chociaż sądze, że poprzednicy by na to wpadli.. chyba nie zadziała..
Termit_
NetJaro: a po co mu string '__LINE__'? smile.gif
anopak
  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)....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.