include класса через url приводит к потере класса

Richard

Guest
include класса через url приводит к потере класса

Здрасте!
Собссннооо сабж.

А если подробней, то интересную заметил особенность

если инклудить сценарий с описанием класса через урл, он выполнится, но сам класс не вернет. Может, я плохо разобрался с работой сервера или с пхп? Хелп плиз, проясните ситуацию.

И тогда еще один вопрос, на тему того, где вообще лучше обращаться к сценариям в больном проекте, по урлу и где по пути.
 

Фанат

oncle terrible
Команда форума
Может, я плохо разобрался с работой сервера или с пхп? Хелп плиз, проясните ситуацию.
можно попробовать разницу в поведении могут прояснить вот эти два текста:
PHP FAQ: Самые основы. Как работает PHP.
PHP FAQ: Различие между абсолютными и относительными путями. В файловой системе и на сайте.
 

Фанат

oncle terrible
Команда форума
может и надо.
а может, стереть его нах.
все равно он ничего не объясняет.
никто нихрена оттуда не понимаеет
 

Richard

Guest
Originally posted by Фанат
может и надо.
а может, стереть его нах.
все равно он ничего не объясняет.
никто нихрена оттуда не понимаеет
Это вы то напрасно. Респект - FAQ замечательный. Действительно почитал и разобрался.
В книжке читал, что главное можно считать, что пхп при инклуде вставляет кусок на место инклуда - вот и непонятна была такая реакция. вобщем да...
Постараюсь быть повнимательней нехт тайм :)

спасиба.
 

Фанат

oncle terrible
Команда форума
в книжке написано все правильно.
что пхп открывает - то и вставляет.
 

4m@t!c

Александр
книжке читал, что главное можно считать, что пхп при инклуде вставляет кусок на место инклуда - вот и непонятна была такая реакция. вобщем да..
Если бы ты разобрался, тогда бы, то, что ты прочитал в книжке не начал бы так глупо цитировать.
 

Richard

Guest
Originally posted by 4m@t!c
Если бы ты разобрался, тогда бы, то, что ты прочитал в книжке не начал бы так глупо цитировать.
Вот, блин, теперь еще и флейм разведем, как же это было глупо.
Я понимаю, что там правильно написано - что подставляет. А ты попробуй напиши класс в сценарии. а потом инклуд сделай через урл, например

myclass.php -
<? class myslass{ ...}?>

mynewclass.php -

<? include('http://localhost/myclass.php');
class mynewclass extends myclass{...}
?>

он тебе скажет, что не может наследовать от несущ-го класса
хотя подставит и выполнит код myclass.php.
 

Макс

Старожил PHPClub
Richard
в 99% случаев делать include("http://...."); либо глупо, либо опасно, независимо от того, подключаешь ты класс или просто контент воруешь.
 

Richard

Guest
Originally posted by SiMM
Richard, ты всё ещё утверждаешь, что всё понял?
я понял, что все пути, что касаются програмы и разработки над писать обращаясь к реальным файлам ( без виртуальных адресов). вот.

в факе так и написано, например вот:

Вот в этом различии и кроются трудности, с которыми часто сталкиваются новички.
Теряют файлы, путают ссылки с файлами, обращаются к <b><font color=#ff0000> локальным файлам по протоколу HTTP, или инклюдят файлы от корня веб-сервера.</font> <b>
 

SiMM

Новичок
Richard, ты не понял главного. Почему именно просиходит так, как происходит. А это куда важнее.
 

Richard

Guest
Originally posted by Макс
Richard
в 99% случаев делать include("http://...."); либо глупо, либо опасно, независимо от того, подключаешь ты класс или просто контент воруешь.
вот собснно, такой ответ бы меня сразу и устроил.


Спасибо всем, что не остались равнодушны к моему неведению.

-~{}~ 14.01.05 21:38:

Originally posted by SiMM
Richard, ты не понял главного. Почему именно просиходит так, как происходит. А это куда важнее.
действительно, это так. :( Я и искал ответ на этот вопрос.
 

SiMM

Новичок
Richard, ответ тебе дал ещё Фанат, но, как он к прискорбию заметил, ты нихера оттуда не понял.
Хорошо, попробую объяснить то, что там написано, из жалости.
Потому что include'я по http ты получишь результат обработки файла Apache'м. В данном случае, поскольку его расширение - php - он будет обработан интерпретатором PHP и в результате твой include будет ничто иное, как вставка HTML-кода, который возвращает в браузер запрос вида http://localhost/myclass.php - ты видишь там класс? Нет? Вот и PHP его не видит. Потому что его нет. Его уже обработала "другая" PHP. И вывела результат обработки "той".
PS: как же ужасен в действительности allow_url_fopen, включенный по дэфолту :(
 

Richard

Guest
Originally posted by SiMM
Richard, ответ тебе дал ещё Фанат, но, как он к прискорбию заметил, ты нихера оттуда не понял.
Хорошо, попробую объяснить то, что там написано, из жалости.
Потому что include'я по http ты получишь результат обработки файла Apache'м. В данном случае, поскольку его расширение - php - он будет обработан интерпретатором PHP и в результате твой include будет ничто иное, как вставка HTML-кода, который возвращает в браузер запрос вида http://localhost/myclass.php - ты видишь там класс? Нет? Вот и PHP его не видит. Потому что его нет. Его уже обработала "другая" PHP. И вывела результат обработки "той".
PS: как же ужасен в действительности allow_url_fopen, включенный по дэфолту :(
угу, теперь понял....

Спасиба, всем еще раз!
 
Сверху