crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в PHP, область видимости переменной
Введите ваше имя
Подтвердите код

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

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 20.2.2013, 2:35
  где-то (я не вникал как это всё завязано) внутрях я наткнулся на код, который находу делает require_once на основе аргумента.
Псевдо код:
foreach (getFileList ("dir") as file){
    require_once(file);
}
а каталогом является один из подкаталогов магазина.
Iron Bug Дата 19.2.2013, 20:46
  есть ещё переменная auto_prepend_file.
где-то в корне, в .htaccess, может стоять что-то типа:
php_value auto_prepend_file file_to_include.php
Litkevich Yuriy Дата 19.2.2013, 18:13
  в общем, по первому сообщению и первому куску кода. Я так и не понял как внутри ControllerCatalogAttribute виден Pagination, т.к. инклюдов никаких нет.

Но я нашёл файл system/startup.php
в котором были строчки: require_once(DIR_SYSTEM . 'library/template.php');
и добавил туда свой require_once(DIR_SYSTEM . 'library/ya_property.php'); // Ya

а в YaProperty добавил:
$this->db = $registry->get('db');
к стати, не знал что можно так объявить член класса, прямо в конструкторе. Эту строчку посмотрел в модуле Cart, который отвечает за корзину.
вот после этого всё заработало

Но так я и не понял из-за чего ModelSaleYaCoupon стал видеть мой YaProperty
Litkevich Yuriy Дата 17.2.2013, 2:08
  Фух, оказалось всё не так просто, как я думал.
Т.к. openCart это, всё же некое прикладное ПО, то оно имеет свои внутренние правила, которые я ещё не понимаю.

Но мне уже удалось добиться, чтобы мой класс заработал.

П.С.
Отпишусь подробнее позже, а то голова дымит, надо спать.
Iron Bug Дата 16.2.2013, 22:10
  PHP не компилирует модули до того, как начнёт их использовать. видимо там, где используется модуль с классом-потомком, предварительно где-то объявлен класс-предок. а в твоей форме - не объявлен. вот и всё.
Litkevich Yuriy Дата 16.2.2013, 22:07
  Vass, Хм, а почему тогда в файле, где объявлен класс ControllerCatalogAttribute нет ни одной подобной функции?
А при этом Pagination видится
Vass Дата 16.2.2013, 19:20
  Litkevich Yuriy, надо заинклюдить файл со своим классом в файле, где хочешь его использовать, функции:
include, include_once, require, require_once делают примерно одно и тоже, но есть нюансы.
Litkevich Yuriy Дата 16.2.2013, 18:59
  Не могу разобраться с областью видимости переменной.

Есть такой код и он работает:
<?php 
class ControllerCatalogAttribute extends Controller {
...
$pagination = new Pagination(); // Интерпретатор на Pagination не ругается.
...
}
?>

Есть код в который я добавил создание объекта своего собственного класса:
<?php
class ModelSaleYaCoupon extends Model {
...
$property = new YaProperty(); // Интерпретатор ругается на YaProperty.
...
}
?>
Сообщение об ошибке:
Цитата
Fatal error: Class 'YaProperty' not found in Y:\home\opencart1504\www\adam\model\sale\ya_coupon.php on line 30


не пойму как показать интерпретатору где искать определение/объявление класса
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 1:32