AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Konstante in Klasse

Ein Thema von Luckie · begonnen am 7. Jul 2009 · letzter Beitrag vom 13. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[PHP] Konstante in Klasse

  Alt 7. Jul 2009, 13:20
Ich habe hier eine PHP-Klasse mit einer Konstanten:
Code:
class CreatePDF
{
    const CORRECTION_FACTOR_MAXCELLROWS = 1.60; // just a workaround
Wenn ich selbige aber benutzen will, sagt er mir, dass er sie nicht kennen würde:
Code:
    private function getMaxTextLinesForRow($i, $trans)
    {       
        return max(
            $this->pdf->getNumLines((string)$i+1, $this->colWidths[0]),
            $this->pdf->getNumLines($trans['Position'][(string)$i]['title'], $this->colWidths[1]),
            $this->pdf->getNumLines($trans['Position'][(string)$i]['description'], $this->colWidths[2]),
            $this->pdf->getNumLines($trans['Position'][(string)$i]['net_price'], $this->colWidths[3]),
            $this->pdf->getNumLines($trans['Position'][(string)$i]['amount'], $this->colWidths[4]),
            $this->pdf->getNumLines($trans['Position'][(string)$i]['amount']*$trans['Position'][(string)$i]['net_price'], $this->colWidths[5]),
            $this->pdf->getNumLines($trans['Position'][(string)$i]['tax_type'], $this->colWidths[6]),
            $this->pdf->getNumLines((1-$trans['Position'][(string)$i]['tax_type']/100)*$trans['Position'][(string)$i]['amount']*$trans['Position'][(string)$i]['net_price'], $this->colWidths[7])
            ) * $this->CORRECTION_FACTOR_MAXCELLROWS;
    }
Zitat:
Undefined property: CreatePDF::$CORRECTION_FACTOR_MAXCELLROWS [APP\views\transactions\createpdf.php, line 154]
Aber laut einem PHP Tutorial werden in Klassen Konstanten mit const deklariert und nicht mit define.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 13:28
Hallo,

so sollte es funktionieren:


self::CORRECTION_FACTOR_MAXCELLROWS
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#3

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 13:28
Imho müsste es doch
Code:
CreatePDF::CORRECTION_FACTOR_MAXCELLROWS
heißen und nicht
Code:
$this->CORRECTION_FACTOR_MAXCELLROWS
, oder?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 13:52
Hm, das wäre aber komisch. Auf Variablen und Methoden der Klasse kann ich mit
Code:
$this->...
zugreifen. Ich probiere es mal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 14:02
Auf Konstanten greifst Du, wie die anderen schon erwähnt haben, mit self:: bzw. Klassenname:: zu.

Du hast auch Zugriff auf die Konstanten, wenn die Klasse nicht instantiiert ist.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 14:17
A-ha. Also ist das bei Konstanten anders als bei Variablen und Methoden? Wie krank ist das denn?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 14:25
Ist es nicht so, dass $this-> auf die aktuelle Instanz der Klasse geht? Wenn Du hingegen auf die Klassenkonstante zugreifen willst, dann bewegst Du Dich aus Sicht von PHP außerhalb der aktuellen Instanz - somit ist die andere Notation korrekt. (Es ist syntaktisch das Gleiche, wenn Du in PHP auf Klassenmthoden zugreifen möchtest.)
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 14:30
Aber die Konstante soll eigentlich keine Klassen-Konstante seion, sondern eine ganz einfache private Konstante innerhalb der Klasse, die auch nur dort gültig ist.

PS: Ich kann das ganze im Moment gerade nicht testen, der DB-Server bei uns spinnt und scheint down zu sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 14:36
Zitat von Luckie:
Aber die Konstante soll eigentlich keine Klassen-Konstante seion, sondern eine ganz einfache private Konstante innerhalb der Klasse, die auch nur dort gültig ist.
Wenn Du PHP ... 5 hast, dann setze ein "private" davor und Du hättest wenigstens das mit der Sichtbarkeit geklärt. Die restliche Syntax müsste ich gleich mal nachschlagen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: [PHP] Konstante in Klasse

  Alt 7. Jul 2009, 15:21
Also mit
Code:
self::...
geht es. Aber setze ich ein private davor
Code:
private const CORRECTION_FACTOR_MAXCELLROWS = 1.60; // just a workaround
meint er:
Zitat:
Parse error: parse error, expecting `T_VARIABLE' in C:\Programme\xampp\htdocs\psi.iogroup.net\public_h tml\app\views\transactions\createpdf.php on line 20
(Zeile 20 ist die obige Zeile.)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz