#php #class
#php #класс
Вопрос:
У меня есть класс php, который определяет время следующим образом (Time.class.php ):
<?PHP
class Time {
var $timestamp;
function timestamp () {
$this->timestamp = date('YmdHis');
return $this->timestamp;
}
}
?>
Что я хочу сделать, так это вызвать это время в другом классе, таком как (Test.class.php ):
<?PHP
class Test {
function test (){
$timestamp = ' '; // <--- the timestamp from the other class
$hourago = $timestamp - 10000;
return $hourago;
}
}
?>
Я новичок в классах PHP, поэтому я не понял, что я читал по этому вопросу. Из того, что я прочитал, это можно сделать с глобальной областью видимости (если она называется областью видимости)?? Если бы вы могли только показать мне, как использовать глобальные переменные или как легко решить подобную проблему, я был бы признателен…
Комментарии:
1. Будьте осторожны при подобных манипуляциях с датами. В определенное время вы можете столкнуться с проблемами. Например, что происходит, когда вы находитесь в час после полуночи? Ваша текущая временная метка может возвращать что-то вроде
20110602001500
, которое, если вы обрабатываете как целое число (в любом случае, проблематично с 32-битами) и вычитаете 10000, оставит вам временную метку20110601991500
. Теперь у вас есть 99 в качестве часовой секции. Рассмотрите возможность прямой работы с меткой времени UNIX — количеством секунд с моментаJan 1, 1970 (00:00:00 GMT)
. Вы можете получить это с помощьюtime()
функции и отформатировать свои временные метки с помощьюdate()
.2. @Aether большое спасибо, поскольку я никогда не работал над скриптом всю ночь, я раньше не думал о такой возможности
Ответ №1:
Сначала вам нужно создать экземпляр класса Time, а затем вызвать метод для этого экземпляра.
$mytime = new Time();
$timestamp = $mytime->timestamp();
В качестве альтернативы вы могли бы посмотреть на статические методы класса.
Ответ №2:
Вы must
используете ВНЕДРЕНИЕ DEPENDENCI.
Вы можете передавать любые объекты references в кострукторе следующим образом:
function test ($yourTimeStamp){
$timestamp = $yourTimeStamp
[...]
}
Комментарии:
1. Вы можете передавать любые объекты references в costructor , то есть если обе функции находятся в одном классе? это верно?
2. @Logan: вы можете передавать любые объекты, когда захотите, куда захотите
3. Почему бы не передать весь объект Time в конструктор и не вызвать там метод timestamp? Делает его более гибким, ИМХО.