Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154

Как переменная ROOT может действовать в файле Router ,если она определенна в файле index.php

31.05.2017, 21:12. Показов 4020. Ответов 22
Метки mvc, php (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовал проект по правилам MVC паттерна,по этому видеоуроку
https://www.youtube.com/watch?... RXbkgkO3zQ


В файле index.php на 20 строке есть определение константы--в которой храниться путь к коренной папке проекта

PHP
1
2
3
4
5
6
//2.Подключение файлов системы
 
 
 
//define - определяет именованную константу.
define('ROOT',dirname(__FILE__));

Есть файл Router.php в котором переменная ROOT используется


PHP
1
2
3
4
5
6
public function __construct(){
 
$routesPath= ROOT.'/config/routes.php';
$this->routes=include($routesPath);
 
}

И вот что не понимаю как переменная ROOT может действовать в файле Router если она определенна в файле index.php


Архив проекта прикрепляю
Вложения
Тип файла: rar mvc.rar (2.9 Кб, 2 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2017, 21:12
Ответы с готовыми решениями:

Дана форма в файле php.index, в нем есть функция, как сделать так чтобы она срабатывала на форме?
вопрос я думаю понятен без особых пояснений. Добавлено через 1 минуту имеется в виду файл index.php, в котором есть форма и есть...

Index.php и CSS! Как в файле стилей указать путь к изображению (background) элемента?
я указываю так: .elem { position: absolute; cursor: pointer; overflow: hidden; background:url(images/drag.gif) no-repeat...

Как правильно слинковать исходник, чтобы в конечном файле не было кода функции, если она не используется?
имеем следующие исходники: 1.c #include "2.h" int start(void)/*Точка входа в программу*/ { return foo(); }

22
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
31.05.2017, 21:16
TVPNERO, так вы же подключаете этот файл, поэтому внутри него становятся доступны все переменные, константы, функции и т.п. из текущей области видимости.
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
01.06.2017, 21:41  [ТС]
Jodah, нет.

Я вот к примеру определил например в одном файле
PHP
1
define('myvar', 55);

потом подключил второй файл с помощью include
и попробовал там вывести константу

PHP
1
echo myvar;
Однако не сработало.

Файлы и видео прикрепляю
Вложения
Тип файла: rar ВАР_видео.rar (870.9 Кб, 1 просмотров)
Тип файла: rar вар.rar (319 байт, 1 просмотров)
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
01.06.2017, 21:47
TVPNERO, во-первых это не переменная, во-вторых для начала нужно разобраться с основами, в частности с областью видимости и в-третьих желательно все это делать не по видеоурокам сомнительного качества
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
01.06.2017, 21:50
TVPNERO, да.

Цитата Сообщение от TVPNERO Посмотреть сообщение
как переменная ROOT может действовать в файле Router если она определенна в файле index.php
Молча, т.е. даже без warning'ов.
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
01.06.2017, 21:50  [ТС]
Jewbacabra, тогда почему в данном примере,не выводится myvar ?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
01.06.2017, 22:05
P.S. И это константа, а не переменная – т.е. область видимости еще больше, хотя и переменные видны в др. файлах, но только не внутри функций и т.п.

Добавлено через 2 минуты
Цитата Сообщение от TVPNERO Посмотреть сообщение
тогда почему в данном примере
В каком примере? Нормально код выложите. Там нечего особо в аттаче выкладывать.

Добавлено через 6 минут

Не по теме:

Такое ощущение, что некоторым доступ к документации разрешен только по талонам.

0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
01.06.2017, 22:45
Цитата Сообщение от TVPNERO Посмотреть сообщение
тогда почему в данном примере,не выводится myvar ?
Название: Снимок.PNG
Просмотров: 22

Размер: 6.1 Кб
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
02.06.2017, 10:07  [ТС]
miketomlin,

Код i2.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<h1>FIRST FILE</h1>
 
<?
include 'i3.php';
 
 
define('myvar', 55);
 
 
 
 
?>
Код i3.php


PHP
1
2
3
4
5
6
7
8
9
10
<h1>connected FILE</h1>
<?
 
 
echo myvar;
 
 
 
 
?>
myvar не выводится в i3.php. Почему?

Добавлено через 53 секунды
Jewbacabra, благодарю,однако по картинке мне ничего не понятно.Лучше словами обьяснить.
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
02.06.2017, 10:53
TVPNERO, тут порядок важен, это вам не ф-ции.

Добавлено через 37 минуты
...Сначала define, а потом подключаем файл, где должно быть доступно определение. Логично, не правда ли? А то, что вы предлагаете, нелогично, хотя кое-где работает, но не в пыхе.

Кстати, если не ошибаюсь, постфактум ф-ции можно определять только в пределах тек. файла, иначе тоже порядок важен.
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
03.06.2017, 12:36  [ТС]
miketomlin,


Благодарю,однако все равно не сработало даже если сначала написать Дефайн ,а потом подключить.
Тогда не понимаю почему в видеоуроке у него все получилось хотя там тож сначала дефайн, а потом подключение.

Код i2.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<h1>FIRST FILE</h1>
 
<?
 
define('myvar', 55);
 
 
require_once 'i3.php';
 
 
 
 
 
 
?>


Код i3.php


PHP
1
2
3
4
5
6
7
8
9
10
<h1>connected FILE</h1>
<?
 
 
echo myvar;
 
 
 
 
?>
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
03.06.2017, 12:50
TVPNERO, вероятно отключены шорт теги. Не используй их никогда.
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
03.06.2017, 14:26  [ТС]
Jewbacabra,

Сделал с полными дескрипторами <?php ?> однако все так же. Не помогло.

Код i2.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<h1>FIRST FILE</h1>
 
<?php
 
define('myvar', 55);
 
 
require_once 'i3.php';
 
 
 
 
 
 
?>

Код i3.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<h1>connected FILE</h1>
 
<?php
 
 
echo myvar;
 
 
 
 
?>
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
03.06.2017, 14:31
Цитата Сообщение от TVPNERO Посмотреть сообщение
однако все так же. Не помогло.
Значит что-то делаешь не так
Кликните здесь для просмотра всего текста
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
03.06.2017, 14:44  [ТС]
Jewbacabra, на картинке мне не все понятно.

Наверное у вас установлен Линукс.

у меня винда7 и мне только вид через браузер понятен или сам код через текстовый редактор.

буду искать в чем проблема.
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
03.06.2017, 14:50
Цитата Сообщение от TVPNERO Посмотреть сообщение
у меня винда7
Пофиг, тут разницы никакой. Выводится хоть connected FILE?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
03.06.2017, 14:57
Цитата Сообщение от TVPNERO Посмотреть сообщение
у меня винда7 и мне только вид через браузер понятен или сам код через текстовый редактор
по-прежнему работает
Кликните здесь для просмотра всего текста
0
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
03.06.2017, 15:52
Может быть проблема просто в том, что вы вызываете константу в том файле, в котором она просто не известна?
В i2.php вы подключили i3.php и задали константу. Но вот только i3.php ничего не известно о файле i2.php и соответственно никакого вызова случиться не может.

Объявите константу в i3.php и попробуйте вызвать ее в i2.php и проблема будет решена
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
03.06.2017, 16:31
Цитата Сообщение от AlexBBB Посмотреть сообщение
В i2.php вы подключили i3.php и задали константу. Но вот только i3.php ничего не известно о файле i2.php и соответственно никакого вызова случиться не может.
Нет. Константы имеют глобальную область видимости, кроме того в php область видимости не ограничивается файлом
К тому же выше я показал что код приведенный TC прекрасно работает
2
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
03.06.2017, 17:17
Прошу прощения, перечитал доку и проверил в коде. Действительно вы правы, могу только добавить, что все-таки если сначала заинклюдить файл, а потом объявить константу, то PHP выдаст E_NOTICE использования неизвестной константы
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2017, 17:17
Помогаю со студенческими работами здесь

Как модифицировать программу,чтобы она читала все числа,если в файле встречаются сторонние символы?
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;ctime&gt; #include&lt;stdlib.h&gt; #include&lt;fstream&gt; ...

Не могу настроить часовой пояс в файле index.php
Этот index.php лежит в корне сайта и содержит в себе различные функции и т.п. Я не могу настроить часовой пояс только в этом файле. В...

Как перезаписать значения переменых в php файле если их очень много?
Добрый день! Прошу совета у форумчан, потому что сама не смогла разобраться с такой задачей: есть файл php в котором записано очень...

Программа должна искать в текстовом файле строчку и если она есть вывести весь текстовый файл в memo (Где ошибка?)
procedure TForm16.Button2Click(Sender: TObject); var f,g:textfile; poisk,s:string; i:integer; begin memo1.Clear; ...

Блок Given-Find переменная не определенна
Задана система из 6 уравнений с 6-ю неизвестными. При попытке расчета функция Find выдает ошибку, что переменная не определена. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru