проблема с одинаковыми именами файлов

sitev

Новичок
проблема с одинаковыми именами файлов

в корневом каталоге находиться файл blog.php
подключаю в нём файл: require_once "cms/sitev.php"

в каталоге cms находяться файлы sitev.php и blog.php
в файле sitev.php подключаю файл require_once "blog.php",
в котором описан класс CBlog

если эти два файла одинаковые и называются blog, то класс CBlog считается не описанным,
если переименовываем один, например, в blog1.php, то всё работает...

что делать?
 

Фанат

oncle terrible
Команда форума
узнать, впервые в жизни, что к файлу можно обратиться не только по имени, но и включая каталог
 

Фанат

oncle terrible
Команда форума
да хоть марсианин
купи себе книжку "виндоус для чайников" и прочти там, как обращаться к файлу по относительному или абсолютному пути
 

sitev

Новичок
ну вот же я пишу в первом топике:

подключаю в нём файл: require_once "cms/sitev.php"

значит умею через каталог??? разве не так???
 

sitev

Новичок
спасибо за ссылки! нашёл рецепт, работает:

пишем в файле cms/sitev.php следующее

require_once dirname(__FILE__)."/blog.php";

-~{}~ 14.02.09 20:20:

require_once dirname(__FILE__)."/blog.php";

да уж, выглядит ужасающе... :)

сколько писал на плюсах, чё-то такого не припомню)
этот глюк похож на ошибку самого PHP :)
 

AmdY

Пью пиво
Команда форума
да php это одна большая ошибка, во всём виноват язык программирования, а не тот кто на нём пишет. видимо до 3-й ссылки ты не дошёл :(
 

sitev

Новичок
Что за превычка раздавать ссылки? У меня есть разные доки да и яндекс с гуглем под рукой...

вроде нашёл работающий вариант
require_once dirname(__FILE__)."/blog.php";

если есть более красивый - подскажите!

может быть я не правильно сформулировал вопрос, попробую заново, более понятно:

есть три файла

1. blog.php
2. cms/sitev.php
3. cms/blog.php

в 1-ом я вызываю require_once "cms/sitev.php";
во 2-ом - require_once "blog.php";

причём 2-ым вызовом я предполагаю, естественно, что подключаю файл blog.php, находящийся в том же каталоге, что и sitev.php (ведь я из него же, из sitev.php, делаю вызов), но оказывается, что это не так, потому что PHP находит 1-ый файл...

просто получается, что интерпретатор тупо засовывает исходник 2-го файла в 1-ый, то есть получается, что я как бы работаю с одним большим файлом следующего содержания:

//начало кода файла blog.php
//начало кода файла cms/sitev.php
//начало кода файла blog.php
//конец кода файла blog.php
//конец кода файла cms/sitev.php
//конец кода файла blog.php

если это и было бы так, то, в принципе, было бы логично, можно было бы сослаться на ТАКУЮ логику работы require_once ...

но теперь, я 3-ий файл переименовываю в cms/blog1.php
всё удивительным образом начинает работать, как я и хотел ранее:

//начало кода файла blog.php
//начало кода файла cms/sitev.php
//начало кода файла cms/blog1.php
//конец кода файла cms/blog1.php
//конец кода файла cms/sitev.php
//конец кода файла blog.php

значит, на самом деле логика работы PHP такая:

//начало кода файла blog.php
//начало кода файла sitev.php
//начало кода файла blog1.php
//конец кода файла blog1.php
//конец кода файла sitev.php
//конец кода файла blog.php

1-ый файл blog.php изначально известен, теперь ищем файл sitev.php, в каталоге, там где лежит 1-ый файл, его нету, тогда ищем в каталоге cms - файл найден.... также и с 3-им файлом... если он называется blog.php, то мы его находим сразу, если же blog1.php, то находим в cms...

так вот, моё мнение, что такая логика - ошибочна!!!

с другой стороны 99% сайтов работаю на PHP, наверняка я в чём-то ошибаюсь, не пойму в чём.... может гуру подскажут, в чём моя ощибка, именно подскажут, а не будут просто раздавать ссылки)
 

Beavis

Banned
sitev
По ссылке всё написано. Если не хочешь читать - не морочь людям голову.
 

Савелей

Новичок
я не гуру, а просто любитель, но насколько я понял проблема Ваша именно в "_once"
 

sitev

Новичок
есть два файла:
1.php и mydir/2.php

файл 1.php:
-----------------------
Булочка
require "mydir/2.php";
-------------------------

файл mydir/2.php:
------------------------
require "1.php";
-------------------------

Запустишь под firefox - получишь кучу "булочек" :)
 

dimagolov

Новичок
Савелей, не надо ляпать языком о том, о чем не смыслишь

sitev, пойди почитай как работает include, вместо того, чтобы чушь писать.
 

pilot911

Новичок
а что так сложно ? не лучше ли читать классы через php функцию __autoload() ?
 
Сверху