Avatar billede tanzaweb Nybegynder
23. august 2006 - 16:54 Der er 15 kommentarer

får ikke dato med

Hej jeg kan ikke få den til at lave logen med datonavn, den laver bare en fil med navnet: smtp_$dato.log

$dato = date('dmY-H_i',time());
    class smtp_client {
    var $connection;
    var $server;
    var $elog_fp;
    var $log_file='log/smtp_$dato.log';
    var $do_log=true;

Hvad skal ændres. har prøvet med "", og '' det ene sted og "" men det virker heller ikke.
Avatar billede pidgeot Nybegynder
23. august 2006 - 16:57 #1
var $log_file='log/smtp_'.$dato.'.log'; - der parses ikke for variabler i en ''-streng, så du skal sætte flere strings sammen.

Jeg er dog ikke helt sikker på om den overhovedet kan se $dato der, så du skal måske skrive date('dmY-H_i',time()) i stedet.
Avatar billede tanzaweb Nybegynder
23. august 2006 - 17:33 #2
var $log_file='log/smtp_'.$dato.'.log';
har jeg også prøvet og det virkede heller ikke :-)

men du mener jeg skal prøv at sætte datoen dernede direkte?
Avatar billede pidgeot Nybegynder
23. august 2006 - 17:38 #3
Ja, prøv. Som sagt mener jeg ikke $dato er synlig inde i en klasse når den er deklareret udenfor, med mindre den er "hentet ind" via global eller en parameter (og det kan du kun i metoder, ikke i klassedefinitioner).

Et alternativ er at du kun erklærer variablen der og så sende filnavnet med når du kører din klasses constructor, som så kan tildele variablen den rigtige værdi.
Avatar billede tanzaweb Nybegynder
23. august 2006 - 17:57 #4
jeg tror jeg giver lidt op med den for den er ikke abolut nødvendig.

Hvordan kan man hente den id via en global, eller et parameter?
Avatar billede pidgeot Nybegynder
23. august 2006 - 18:04 #5
Inde i din klasse har du en metode, som tager en parameter med - den parameter bruger du så i metoden til at sætte $log_file-variablen i din klasse til den rigtige værdi. Naturligvis skal det jo være den rigtige værdi du sender med, altså $dato (og hvis den metode kaldes fra en ANDEN metode, skal $dato være sat i den metode du kalder fra, enten via parameter, tildeling eller global).

Den alternative måde er at du først i metoden skriver global $dato, og så sætter den der - den linie gør at du kan tilgå $dato-variablen der findes udenfor din metode INDE i din metode. Det er samme princip, men to måder at gøre det på.

Den metode kan som nævnt passende være din klasses constructor (et eller andet sted skal du jo instantiere din klasse, så du kommer ikke uden om at kalde den).
Avatar billede tanzaweb Nybegynder
23. august 2006 - 19:43 #6
jeg er lidt træt lige nu så det må jeg se om jeg kan finde ud af senere.
Avatar billede aeroone Nybegynder
25. august 2006 - 21:33 #7
Har du prøvet var $log_file='log/smtp_' . $dato . '.log';
Avatar billede aeroone Nybegynder
25. august 2006 - 21:49 #8
UPS, du har prøvet det..

Hvad med at lave en variabel, udenfor din klasse, der indeholder "$log_file1='log/smtp_' . $dato . '.log';" (denne streng virker, hvis du bare laver den uden for en klasse)
Så inde i klassen sætter "var $log_file=var $log_file1;"

måske ??
Avatar billede tanzaweb Nybegynder
25. august 2006 - 22:11 #9
jeg får en parse error i var $log_file1='log/smtp_'.$dato.'.log';
Avatar billede aeroone Nybegynder
27. august 2006 - 11:47 #10
Du skal ikke sætte den som en var, når du sætter den uden for klassen.
Men som det blev sagt tilligere, kan du ikke lave variablen, når du skal bruge din klasse
Avatar billede tanzaweb Nybegynder
27. august 2006 - 12:00 #11
Jeg har prøvet på mange måder men ingen synes at virke, jeg er ikke super god til det men plejer godt at kan få det til at virke til sidst.  :-)

JEg har prøvet med dette også:

$dato = date('dmY-H_i',time());
var $log_file1='log/smtp_$dato.log';

    class smtp_client {
    var $connection;
    var $server;
    var $elog_fp;
    var $log_file=var $log_file1;
    var $do_log=true;

også med: $log_file1='log/smtp_$dato.log';

Hvordan kan jeg lige gøre det? kan du hjælpe mig til at forstpå det, for synes ikke det forklare det på php sitet :-( :-)
Avatar billede pidgeot Nybegynder
27. august 2006 - 12:03 #12
Når du skal bruge dit object, skriver du vel et eller andet sted $dinvar=new smtp_client(...). Hvis du nu tilføjer $dato som en ekstra parameter i det kald, og ændrer din constructor tilsvarende, så kan du jo sætte $log_file inde i klassen på samme måde som du må sætte $connection og $server.
Avatar billede aeroone Nybegynder
27. august 2006 - 12:49 #13
<pre>
<?php
    class smtp_client {
    var $connection;
    var $server;
    var $elog_fp;
    var $log_file;
    var $do_log=true;
   
  function smtp_client($connection, $server, $elog_fp, $log_file, $do_log)
  {
      $this->connection = $connection;
      $this->server = $server;
      $this->elog_fp = $elog_fp;
      $this->log_file = $log_file;
      $this->do_log = $do_log;
  }
}


function print_vars($obj)
{
  foreach (get_object_vars($obj) as $prop => $val) {
      echo "\t$prop = $val\n";
  }
}

$log = 'log/smtp_' . date('dmY-H_i_s',time()) . '.log';
$conn = new smtp_client("1", "2", "3", $log, true);

echo "\nsmtp_client: Properties\n";
print_vars($conn);

?>
</pre>
Avatar billede tanzaweb Nybegynder
27. august 2006 - 19:42 #14
Ja, jeg skal så have det ind i denne Function herunder og hvordan gør jeg lige det for jeg kan ikke lige se hvordan jeg gør det.

function elog($text, $mode=0) {
        if (!$this->do_log) return;

        // open file
        if (!$this->elog_fp) {
            if (!($this->elog_fp=fopen($this->log_file, 'a'))) return;
            fwrite($this->elog_fp, "\n-------------------------------------------\n");
            fwrite($this->elog_fp, " Sent " . date("Y-m-d H:i:s") . "\n");
            fwrite($this->elog_fp, "-------------------------------------------\n");
            }

        // write to log
        if (!$mode) fwrite($this->elog_fp, "    $text\n");
        else fwrite($this->elog_fp, "$text\n");
        }
    }
Avatar billede aeroone Nybegynder
27. august 2006 - 21:30 #15
Nej nej, den function, jeg har lavet, var blot for at vise dig at det virker hvis laver den variable der skal indeholde logdilnavnet, når du kalder din klasse:

$log = 'log/smtp_' . date('dmY-H_i_s',time()) . '.log';
$conn = new smtp_client("1", "2", "3", $log, true);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester