Я написал класс о переводе дат в разных форматах / языках. Но проблема в том, что когда я включаю в нее функцию даты, она, похоже, не работает. Ты знаешь почему ? Я сделал свой код легче с необходимыми для понимания проблемы:
class Test { public function test($timestamp, $format='d/m/Y') { return date($format, $timestamp); } }
Хорошо, вот полный класс …
class GetDateTime { private $_text_en_US = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "January", "February", "March", "April", "May","June", "July", "August", "September","October", "November", "December"); private $_text_fr_FR = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"); public function getDateTime($format='d/m/Y', $timestamp, $locale='fr_FR') { switch ($format) { case 'd/m/Y': case 'm/d/Y': return date($format, $timestamp); break; case 'ld F Y': return str_replace($_text_en_US, ${'_text_'.$locale}, date($format, $timestamp)); break; } } }
… и как я это называю:
include_once (BASE_DIR.'/lib/dateTime.class.php'); $dateTime = new GetDateTime();
Дело в том, что он не переводится, когда я звоню:
echo $dateTime->getDateTime('ld F Y', date());
Вы, вероятно, путаетесь, почему метод не возвращает то, что вы хотели.
new Test(time())
не возвращает форматированную дату, потому что метод test
– это то же имя, что и класс, и из-за этого метод test
становится конструктором этого класса. Вы не можете возвращать значения из конструктора, потому что при создании объекта возвращается ссылка на этот объект.
Переименуйте свой методный test
на что-то другое, инициализируйте класс и вызовите этот новый метод:
$obj = new Test; echo $obj->new_method(time() + 3600);