- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Собственно есть два экземпляра класса:
Например у класса Class1 есть метод view1(), а у класса Class2 - view2().
Если использовать влоб:
Notice: Undefined variable: class1 in .....
Fatal error: Call to a member function view1() on a non-object in ....
Можно передать экземпляр первого класса параметром, при создании экземпляра второго класса. В конструкте второго присвоить его какой нить переменной и использовать, но мне кажется что это очень криво. Просветите меня, как правильно делать :)
Почитайте по область видимости переменных, можно использовать массив GLOBALS или GLOBAL уже не помню как точно.
Ну если твоя функция полностью идентична то лучше использовать наследование классов. Т.е.
class Class2 extends Class1
тогда Class2 получит те же свойства и методы что и Class1 плюс некоторые можно переобъявить, а некоторые дописать.
Если же делать так как ты делаешь, то наименее расходным по производительности вариантом будет объявлять экземпляр класса 1 внутри конкретного метода класса2, там где нужно. Но все равно это страх божий и удар по производительности аццкий =)
По поводу видимости: объявить глобальный экземпляр класса это тоже лихо. но можно.
global $class1;
$class1= new Class1;
и в Class2->View
просто написать global $class1;
Нет, глобалы я небуду исползовать.
class Class2 extends Class1
тогда Class2 получит те же свойства и методы что и Class1 плюс некоторые можно переобъявить, а некоторые дописать.
Если же делать так как ты делаешь, то наименее расходным по производительности вариантом будет объявлять экземпляр класса 1 внутри конкретного метода класса2, там где нужно. Но все равно это страх божий и удар по производительности аццкий =)
Да, это тоже как-то не так.
Собственно есть класс Config у которого есть метод getParam(переменная), который возвращает значение переменной конфига. Он инициализирован в index.php и его экземпляр "идет" через всю cms. Естественно этот метод может понадобиться внутри других классов, так же как и методы класса для работы с MySQL. Мне кажеться не выход вставлять экземпляры класса в глобалс или объявлять их внутри каждого класса. Других вариантов я так понимаю нету?
Если я правильно понял, вы хотите инициализировать экземпляр класс единожды, а потом пользоваться исключительно этим единственным экземпляром.
Если так, то нужно использовать шаблон Singleton:
Николай В., спасибо большое, это действительно то, что нужно!