Declaration compatible
Verfasst: 19.01.2016, 16:18
Mir ist aufgefallen, dass an einigen Stellen Parameter in vererbten Klassen verändert wurden, bzw fehlen.
Das führt dann zu einem PHP Warning: Declaration of ... should be compatible with ...
In der Produktivumgebung sollten zwar Warnings nicht ausgegeben werden, aber in meiner Lokalen Testumgebung hab ich das eigentlich Standardmäßig drin.
Den ein oder anderen hat ich in meiner Testumgebung schon behoben, aber mit dem letzten beta Update ist es natürlich wieder drin.
-----------------------
Das wäre
Behebung: Datei \mods\wpsg_mod_weight.class.php, Funktion: basket_save_product
ändern zu
Hat in dieser Funktion keinerlei Bedeutung, aber der Parameter finish_order wurde in Elternklasse hinzugefügt.
------------------------------------------------
Bei den folgenden Warnings wurden die Parameter teils inkompatibel geändert, also nicht einfach hinten dran, sondern z.b. ein zusätzlicher Paramter am Anfang, was prinzipiell schlecht ist.
Die fpdf Integration sollte man hier durch anders lautende Funktionen umsetzten, da die wpsg Funktionen auch was anderes machen als die orginalen fpdf.
[edit] Mir ist grad noch was aufgefallen. Die Klasse wpsg_fpdf gibt es doppelt. Einmal unter /mods/mod_rechnungen/wpsg_fpdf.class.php und nochmal unter /lib/wpsg_fpdf.class.php. Bis auf 2 Funktionen sind diese beiden gleich. Die aus mod_rechnungen beinhaltet noch Rotate und RotateText und 2 Variablendeklarationen am Anfang, dürfte also die aktuellere sein.
=> Vorschlag: Funktion umbenennen in SetTextHexColor($strHEXCode)
---------------------
Aktuell:
Ändern zu:
---------------------
=> Vorschlag: Funktion umbenennen in MultiCellWithPos(...)
zum Vergleich hier die fpdf Funktion
hier die wpsg
Hier stimmen die Parameter gar nicht mehr überein, weil als erster Parameter einer hinzugefügt worden ist.
------------------------------------------------
Gut das hier php warnings ausgibt, hätte ich die Funktionen aus fpdf irgendwo im Rechnungstemplate gebraucht, hätte ich wahrscheinlich in der fpdf Doku nachgeschaut wegen der Parameter und wär wahrscheinlich nicht weit gekommen.
Noch eine Frage, wieso werft Ihr die Formatierung/Zeilenumbrüche raus im Quellcode? Das interne Kommentare rausfliegen ok, aber wieso die Formatierung? Ich arbeite in Netbeans und der kann Autoformat, also kein Problem das ganze wieder in eine einigermaßen passende Form zu bringen, aber das nach jedem Update in jeder Datei machen wo man was nachschauen will ist einfach unnötige Arbeit.
Das führt dann zu einem PHP Warning: Declaration of ... should be compatible with ...
In der Produktivumgebung sollten zwar Warnings nicht ausgegeben werden, aber in meiner Lokalen Testumgebung hab ich das eigentlich Standardmäßig drin.
Den ein oder anderen hat ich in meiner Testumgebung schon behoben, aber mit dem letzten beta Update ist es natürlich wieder drin.
-----------------------
Das wäre
Code: Alles auswählen
PHP Warning: Declaration of wpsg_mod_weight::basket_save_product(&$data, &$product_data) should be compatible with wpsg_mod_basic::basket_save_product(&$data, &$product_data, $finish_order) in ...\wp-content\plugins\wpshopgermany\mods\wpsg_mod_weight.class.php on line 8
Code: Alles auswählen
public function basket_save_product(&$data, &$product_data) {
Code: Alles auswählen
public function basket_save_product(&$data, &$product_data, $finish_order) {
------------------------------------------------
Bei den folgenden Warnings wurden die Parameter teils inkompatibel geändert, also nicht einfach hinten dran, sondern z.b. ein zusätzlicher Paramter am Anfang, was prinzipiell schlecht ist.
Die fpdf Integration sollte man hier durch anders lautende Funktionen umsetzten, da die wpsg Funktionen auch was anderes machen als die orginalen fpdf.
[edit] Mir ist grad noch was aufgefallen. Die Klasse wpsg_fpdf gibt es doppelt. Einmal unter /mods/mod_rechnungen/wpsg_fpdf.class.php und nochmal unter /lib/wpsg_fpdf.class.php. Bis auf 2 Funktionen sind diese beiden gleich. Die aus mod_rechnungen beinhaltet noch Rotate und RotateText und 2 Variablendeklarationen am Anfang, dürfte also die aktuellere sein.
Code: Alles auswählen
PHP Warning: Declaration of wpsg_fpdf::SetTextColor($strHEXCode) should be compatible with FPDF::SetTextColor($r, $g = NULL, $b = NULL) in ...\wp-content\plugins\wpshopgermany\mods\mod_rechnungen\wpsg_fpdf.class.php on line 2
---------------------
Code: Alles auswählen
PHP Warning: Declaration of wpsg_fpdf::Cell($w, $h, $text, $border, $ln, $align, $fill = 0) should be compatible with FPDF::Cell($w, $h = 0, $txt = '', $border = 0, $ln = 0, $align = '', $fill = false, $link = '') in ...\wp-content\plugins\wpshopgermany\mods\mod_rechnungen\wpsg_fpdf.class.php on line 2
Code: Alles auswählen
public function Cell($w, $h, $text, $border, $ln, $align, $fill = 0, $link) {
parent::Cell($w, $h, $this->toIso($text), $border, $ln, $align, $fill);
}
Code: Alles auswählen
public function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill = 0, $link='') {
parent::Cell($w, $h, $this->toIso($txt), $border, $ln, $align, $fill, $link);
}
Code: Alles auswählen
PHP Warning: Declaration of wpsg_fpdf::MultiCell($x, $y, $h, $txt, $border = 0, $align = 'L', $fill = 0, $width = 0) should be compatible with FPDF::MultiCell($w, $h, $txt, $border = 0, $align = 'J', $fill = false) in ...\wp-content\plugins\wpshopgermany\mods\mod_rechnungen\wpsg_fpdf.class.php on line 2
zum Vergleich hier die fpdf Funktion
Code: Alles auswählen
MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false)
Code: Alles auswählen
MultiCell($x, $y, $h, $txt, $border = 0, $align = 'L', $fill = 0, $width = 0)
------------------------------------------------
Gut das hier php warnings ausgibt, hätte ich die Funktionen aus fpdf irgendwo im Rechnungstemplate gebraucht, hätte ich wahrscheinlich in der fpdf Doku nachgeschaut wegen der Parameter und wär wahrscheinlich nicht weit gekommen.
Noch eine Frage, wieso werft Ihr die Formatierung/Zeilenumbrüche raus im Quellcode? Das interne Kommentare rausfliegen ok, aber wieso die Formatierung? Ich arbeite in Netbeans und der kann Autoformat, also kein Problem das ganze wieder in eine einigermaßen passende Form zu bringen, aber das nach jedem Update in jeder Datei machen wo man was nachschauen will ist einfach unnötige Arbeit.