ugrás a tartalomhoz

PHP 5.2.1 alatt nem olvasódik be az osztályom az __autoload függvénnyel

w3net · 2007. Már. 30. (P), 14.12
<?php # File classes/class.DateTime.php
class DateTime {
    private $_dateTime;

    function __construct($dateTime){

        if (!is_numeric($dateTime))
            throw new InvalidArgumentException(__METHOD__ .' Passed argument ('. $dateTime .')is not an number.');

        $this->_dateTime = intval($dateTime);
    }


    public static function Now(){
        return new DateTime(time());
    }
}
?>
<?php
# File: index.php
error_reporting(E_STRICT | E_ALL);


## SET TimeZone
    if (function_exists('date_default_timezone_set'))
        date_default_timezone_set('Europe/Paris');
    setlocale(LC_ALL, 'hungarian');


 // loads BLL classes (it is not necessary to include them)
    function __autoload($class_name) { 
        include_once('classes/class.'. $class_name .'.php');
    }


$today = DateTime::Now(); // !!!
echo $today;
?>
A fenti kód a legújabb PHP 5.2.1 -essel (Windows XP) nem működik, viszont PHP5.1.2 (Windows) és PHP 5.1.6 (Linux) működik.
PHP 5.2.1 a következőt irja ki az index.php lefuttatásakor:
Fatal error: Call to undefined method DateTime::now()


Természetesen ennek működnie kellene.
Két dologra gondolok: bug, vagy a PHP fejlesztői már megint bevezettek valami változtatást, aminek senki sem örül (a changelog-ban nem találtam erről szóló bejegyzést).

Szeretném tudni, hol a hiba, és jó lenne, ha más is letesztelné a fenti kódot. Köszi.
 
1

Az osztályod neve

Sulik Szabolcs · 2007. Már. 30. (P), 22.02

<?php

if (class_exists('datetime')) {
	echo 'mar van';
} else {
	echo 'meg nincs';
}

?>
Tippelj mit ír ki 5.2.1 alatt.
2

benne van a changelog-ban

Sulik Szabolcs · 2007. Már. 30. (P), 23.43
Itt megtalálod azt a hibát, amelyet a címlapról elérhető changelog-ban emlitenek. Idézem:

Fixed bug #39782 (setTime() on a DateTime constructed with a Weekday yields incorrect results). (Ilia)


Ne haragudj, de hogyan kerested, hogy nem sikerült megtalálnod? (pedig egyből a changelog elején van)
3

Igazad van

w3net · 2007. Már. 31. (Szo), 11.17
Köszönöm. Erre nem is gondoltam.

date_create and other DateTime related functions are included by default only in PHP versions equal and greater than 5.2.

In PHP 5.1.2 this functionality is marked to be experimental and has to be enabled at compile time.


Megjegyzem kicsit elkéstek vele.
4

PHP 5.2.1 alatt nem ír ki hibaüzenetet

chipi · 2007. Ápr. 7. (Szo), 17.28
Az miért van, hogy a szerverünkön 5.2.1 php futt és a hibás sorokat nem dobja ki? Azaz nincsen semmilyen visszejelzés, hogy itt gáz lenne.
5

Téma

janoszen · 2007. Ápr. 7. (Szo), 17.33
Az miért van, hogy beleteszed a kérdésedet egy olyan témába, ahova az nem való és még csak nem is olvasod el a doksit és nem is adsz elegendő információt, hogy normálisan megválaszolhassuk?
6

Ide tartozna

chipi · 2007. Ápr. 7. (Szo), 17.38
Azért tettem ide bele mert láttam, hogy 5.2.1 php a téma, de a classal kapcsolatos, és úgy gondoltam, hogy talán beleférne, de akkor mégsem :(
A probléma csak annyi lenne, hogy ha pl:
if($valami=1){}else{
és lefelejtem ezt } akkor kiírja, hogy hiban van benne, de ezt a szerver nem teszi.
7

Nem 5.2.1

janoszen · 2007. Ápr. 7. (Szo), 18.02
Ha vetted volna a fáradtságot, hogy utánaolvass a Weblaboros fórum-szokásoknak akkor láttad volna, hogy itt nincsenek szemetesláda-jellegű gyűjtő témák, hanem jól meghatározott témák vanank, amik egy konkrét kérdésről szólnak.

A problémádra a valószínű megoldást pedig már fentebb belinkeltem, amit egy kis kereséssel magad is megtalálhattál volna. Ha pedig nem ez a megoldás, akkor visszatérek az eredeti kérdésemre: miért nem adsz elég infót, hogy legalább el tudjunk indulni?