Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Obj] __construct
Forum PHP.pl > Forum > PHP
Spirit86
Witam,
cały czas pisałem skrypt na PHP5, jednakże chcę, aby był kompatybilny ze wszystkimi wersjami php. Gdzieś wyczytałem, że konstruktor klasy powinnien nazywać się "__construct", wszystko jest OK, jak działamy na PHP5, gdy odpalamy ten sam skrypt na starszej wersji php konstruktor nie działa. W związku z czym mam pytanie, jak nazywać konstruktor?!
kubatron
Wystarczy popatrzyć w manuala i poczytać o PHP4 smile.gif Konstruktor w PHP4 nazywamy taką samą nazwą jak klasa nasze smile.gif A w php5 wystarczy ze nazwiemy go __construct i automatycznie wykryje ze to jest nasz konstruktor klasy smile.gif
  1. <?php
  2. class Test {
  3. function Test() {
  4. echo 'To jest Konstruktor w PHP4';
  5. }
  6. }
  7. ?>

  1. <?php
  2. class Test {
  3. public function __construct() {
  4. echo 'Konstruktor w PHP5';
  5. }
  6. }
  7. ?>
Speedy
Z tego , co mi wiadomo w php 5 konstruktor zwie się właśnie : __construct() .
Natomiast w php 4 konstruktor jest metodą, która zwie się tak samo jak klasa, w której ów metoda się znajduje. To powinno działać w php 4 i 5 .

Pozdrawiam.

// edit

Kubatron jest o minutę szybszy snitch.gif
Spirit86
tak, ale problem w tym, zeby napisać to, tak aby było zgodne ze standartami, nowym standartem jest __construct, a starym ta sama nazwa, jednakże nowa nie działa ze starymi i to jest ten ból...
@kubatron: W tym sęk, że czytałem manuala snitch.gif
crash
A coś takiego?:
  1. <?php
  2. class Klasa
  3. {
  4.  function __Klasa()
  5.  {
  6. // ...
  7.  }
  8.  function __construct()
  9.  {
  10. $this->Klasa();
  11.  }
  12.  // ...
  13. }
  14. ?>
Spirit86
w sumie myślałem, że jak napiszę:
  1. <?php
  2.  
  3. class Klasa
  4. {
  5.  function Klasa()
  6.  {
  7. // ...
  8.  }
  9.  function __construct()
  10.  {
  11.  //..
  12.  }
  13.  
  14. }
  15. ?>
i włączę to na php5 to wywali błąd, a tak nie jest smile.gif
dr_bonzo
Jaki ma sens dostosowywanie skryptu pisanego pod 5ke do starszych wersji. Niektorych nowosci 5ki nie zaimplementujesz w starszych wersjach, np. interfejsy, zakres widocznosci pol/metod klasy.

Pisz moze pod czworke -- powinno dzialac od razu w piatce (no, moze z malutkimi przerobkami).
kubatron
Popieram cie dr_bonzo, a tak apropo jak piszesz to pisz pod jedną wersje i nie rób sobie na przyszlośc problemów jak coś z PHP4 i PHP5 napisać tak aby działało smile.gif Bo to się mija z celem i zwalnia działanie twojej aplikacji smile.gif
SongoQ
Rozniez popieram @dr_bonzo po co sobie problemy stwarzac i pisac pod 2 wersje.
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.