Постоянный путь к файлу со стороны файла с классом а не файла с экземпляром класса.

Статус
В этой теме нельзя размещать новые ответы.

VVWind

Новичок
Вот класс:

PHP:
class Log {
    function Add ($text) {
        date_default_timezone_set('Europe/Moscow');
        $filePath = "data/logs/logs";
        $file = fopen($filePath, "a");
        if ($file) {
            fwrite($file, date("d.m.y")."|".date((date("G")+2).":i:s")." ".$_SESSION['fio'].": ".$text."\n");
            fclose($file);
        }else {
            echo("Запись в лог не удалась.");
        }
    }
}
Суть в том, что по отношению к файлу LogClass.php файл logs существует.
Т.е. тут адрес указан верно.

Но если к примеру я в другой папке сделаю include LogClass.php - то теперь адрес к файлу log неверный.
Как сделать так, чтобы обращение было со стороны изначального файла с классом Log а не его экземплярах в других файлах, которые в разных папках раскиданы?
 

Вурдалак

Продвинутый новичок
По-хорошему, путь к логу должен задаваться кем-то извне, там создаётся объект.
 

VVWind

Новичок
То есть путь к логу лучше всего задавать там, где создается экземпляр класса? Хм. Это решает проблему. Спасибо!
 

Adelf

Administrator
Команда форума
VVWind
У тебя очень много возникает вопросов, которые являются стандартными. Они решены в любом фреймворке.
Советую глянуть фреймворк, могу посоветовать Кохану, просто из-за довольного простого её кода. Очень сильно просветишься :)
 

Фанат

oncle terrible
Команда форума
если я правильно понял вопрос, то при любых обращениях к файлам всегда надо писать абсолютный путь
http://phpfaq.ru/paths
 

VVWind

Новичок
Я теперь делаю так в каждом файле, который создает экземпляр класса.
PHP:
$Log = new Log();
$Log->path = "../data/logs/logs";
Путь указываю в зависимости от положения файла.
 

Adelf

Administrator
Команда форума
VVWind
PHP:
$Log = new Log("../data/logs/logs");
Так лучше может? Особенно, если без path Log не может ничего делать.
 

VVWind

Новичок
Фанат, что при недостатке знаний вполне себе способ был.

radioheaded помогло, спасибо!
 

Baton

Новичок
Откройте для себя __DIR__
Опаньки, а я не знал про такую константу, только про __FILE__.

А понятно, она начина с php 5.3

http://php.net/manual/ru/language.constants.predefined.php

Вы не представляете как я рад, в ж%%у трейты даешь какойнить dirname( __FILE__, 1 )) где 1 это кол-во диров назад.
 

Фанат

oncle terrible
Команда форума
Вот опять мы видим тупой ответ на тупой вопрос.
Казалось бы - какой смысл привязывать логи к кодовой базе?

С какой стати логи должны писаться в папку, как-то связанную с кодом? почему не в специально предназначенную для этого папку?
Загадка.
но уже бегут доброхоты, задрав штаны - делиться волшебными знаниями.
 

radioheaded

PHP нуб
Вот опять мы видим тупой ответ на тупой вопрос.
Казалось бы - какой смысл привязывать логи к кодовой базе?

С какой стати логи должны писаться в папку, как-то связанную с кодом? почему не в специально предназначенную для этого папку?
Загадка.
но уже бегут доброхоты, задрав штаны - делиться волшебными знаниями.
Ваш ответ, безусловно, гораздо полезнее.
 

Фанат

oncle terrible
Команда форума
Я бы сделал настройку в конфиге, и брал путь для логов оттуда.
Ни писать логи в папку с классом, ни жёстко прописывать путь прямо в классе я бы ни в коем случае не стал, поскольку это треш и содомия.
 

radioheaded

PHP нуб
Ну и чтобы совсем свести Фаната с ума, я бы посоветовал не писать свои велосипеды, а заюзать прекрасный monolog.
 

VVWind

Новичок
Файл logs находится в папке info/other/logs/logs.txt

Туда и будет ссылаться файл с классом.
Так что никаких логов рядом с файлом с классом.
 

fixxxer

К.О.
Партнер клуба
Писать логи (и вообще что-либо) в один каталог с кодом это тоже трэш. ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху