@samsepi0l

Как правильно решить задачу?

Формулировка:
Используя константы и обслуживающие их функции, добейтесь от конструкции require поведение require_once. Иными словами, при многократном включении PHP-файла, например с классом Point, код во включаемом файле должен выполниться один раз.
Не могу понять правильно ли решил.
<?php
//class_point.php 
class Point
{
  public $x;
  public $y;

  const ClassName = __CLASS__;
}

<?php
//index.php
define('CLASS_POINT', require('class_point.php'));

if (defined('CLASS_POINT')) {
  if (CLASS_POINT) {
    echo "Файл уже подключен\n";
  }
}

$obj = new Point();
echo $obj->x = 1;
echo "\n";
echo $obj->y = 2;
echo "\n";
  • Вопрос задан
  • 589 просмотров
Решения вопроса 1
profesor08
@profesor08 Куратор тега PHP
Любым способом предотврати объявление. Проверь наличие константы, если есть, то ничего не делать.

if (!defined("CLASS_POINT_DEFINED")) {
    define("CLASS_POINT_DEFINED", "CLASS_POINT_DEFINED");

    class Point {
    
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
класс нужно обернуть в if, но это какое-то чудачество через букву м..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы