PHP 5.2.1 alatt nem olvasódik be az osztályom az __autoload függvénnyel
<?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;
?>
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.
Az osztályod neve
benne van a changelog-ban
Ne haragudj, de hogyan kerested, hogy nem sikerült megtalálnod? (pedig egyből a changelog elején van)
Igazad van
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.
PHP 5.2.1 alatt nem ír ki hibaüzenetet
Téma
Ide tartozna
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.
Nem 5.2.1
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?