PHP, область видимости переменной |
Здравствуйте, гость ( Вход | Регистрация )
PHP, область видимости переменной |
Litkevich Yuriy |
16.2.2013, 18:59
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Не могу разобраться с областью видимости переменной.
Есть такой код и он работает:
Есть код в который я добавил создание объекта своего собственного класса: Сообщение об ошибке:Цитата Fatal error: Class 'YaProperty' not found in Y:\home\opencart1504\www\adam\model\sale\ya_coupon.php on line 30 не пойму как показать интерпретатору где искать определение/объявление класса |
|
|
Vass |
16.2.2013, 19:20
Сообщение
#2
|
Студент Группа: Участник Сообщений: 46 Регистрация: 17.3.2009 Из: Россия, Рыбинск Пользователь №: 617 Спасибо сказали: 8 раз(а) Репутация: 0 |
Litkevich Yuriy, надо заинклюдить файл со своим классом в файле, где хочешь его использовать, функции:
include, include_once, require, require_once делают примерно одно и тоже, но есть нюансы. |
|
|
Litkevich Yuriy |
16.2.2013, 22:07
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Vass, Хм, а почему тогда в файле, где объявлен класс ControllerCatalogAttribute нет ни одной подобной функции?
А при этом Pagination видится |
|
|
Iron Bug |
16.2.2013, 22:10
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
PHP не компилирует модули до того, как начнёт их использовать. видимо там, где используется модуль с классом-потомком, предварительно где-то объявлен класс-предок. а в твоей форме - не объявлен. вот и всё.
|
|
|
Litkevich Yuriy |
17.2.2013, 2:08
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Фух, оказалось всё не так просто, как я думал.
Т.к. openCart это, всё же некое прикладное ПО, то оно имеет свои внутренние правила, которые я ещё не понимаю. Но мне уже удалось добиться, чтобы мой класс заработал. П.С. Отпишусь подробнее позже, а то голова дымит, надо спать. |
|
|
Litkevich Yuriy |
19.2.2013, 18:13
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
в общем, по первому сообщению и первому куску кода. Я так и не понял как внутри ControllerCatalogAttribute виден Pagination, т.к. инклюдов никаких нет.
Но я нашёл файл system/startup.php в котором были строчки: require_once(DIR_SYSTEM . 'library/template.php'); и добавил туда свой require_once(DIR_SYSTEM . 'library/ya_property.php'); // Ya а в YaProperty добавил: к стати, не знал что можно так объявить член класса, прямо в конструкторе. Эту строчку посмотрел в модуле Cart, который отвечает за корзину.вот после этого всё заработало Но так я и не понял из-за чего ModelSaleYaCoupon стал видеть мой YaProperty |
|
|
Iron Bug |
19.2.2013, 20:46
Сообщение
#7
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
есть ещё переменная auto_prepend_file.
где-то в корне, в .htaccess, может стоять что-то типа:
|
|
|
Litkevich Yuriy |
20.2.2013, 2:35
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
где-то (я не вникал как это всё завязано) внутрях я наткнулся на код, который находу делает require_once на основе аргумента.
Псевдо код: а каталогом является один из подкаталогов магазина.
|
|
|
Текстовая версия | Сейчас: 1.12.2024, 7:23 |