Простое использование класса в другом классе с помощью примера

#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? Делает его более гибким, ИМХО.