Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89

Обращение к разным классам из класса

07.04.2016, 18:58. Показов 1601. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
namespace app\controllers;
class MainController{
    public function index() 
    {
        
        echo 'Получилось!';
    }
    
    public function skin() 
    {
        $s = 'Тут что-то еще.';
        echo $s;
        
    }
}
В нем необходимо обращаться к классу БД: db::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
И выводить данные через:
PHP
1
2
$smarty->assign('s', $s);
$smarty->display('main.tpl');
Поискав в интернете, я так понял, что можно подключить как дочерний класс к Smarty: "extends Smarty", но возникли трудности: это не решает проблемы с классом БД и как указать путь к Smarty. Он находится по пути: lk/libs/smarty.class.php , а используемый класс по адресу: lk/app/controllers/MainController.php + у него namespace app\controllers; Так же прочел много про конструктор, многие пишут, что надо через него. Но я так и не понял, как это работает. В общем, прошу подробно разъяснить все.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2016, 18:58
Ответы с готовыми решениями:

Непонятное обращение к классам
Привет. Видел конструкции вида $nabor_bukv-&gt;chto_to_eshe()-&gt;kakaya_to_shtuka Например в ООП стиле общения с БД. Приведите простейший...

Динамический вызов разных методов класса с разным количеством аргументов
Здравствуйте, возникла такая проблема. У меня есть класс в котором есть несколько методов которые принимают разное количество аргументов....

Обращение к функции класса
Всем доброго вечера! Имеется вот такой вот синглтон с конектом к ДБ и функциями insert update delete. &lt;?php class GoodsClass { ...

5
 Аватар для Algoritmer
159 / 98 / 25
Регистрация: 07.03.2013
Сообщений: 513
Записей в блоге: 1
09.04.2016, 10:42
Vassillissk, разбираться конкретно с Вашими классами вряд ли кто-то будет. Общий подход такой. пусть имеется 2 класса: Class1 и Class2, описанные соответственно в файлах "class1.php" , "class2.php".
Чтобы обратиться непосредственно к методу класса, метод класса должен быть статическим (объявленным с использованием static)
Иначе обратиться можно через объект типа данного класса.
Для начала подключаем класс
PHP
1
require_once "class2.php";
Затем создаем объект:
PHP
1
$ob_cl2=new Class2();
и затем уже используем метод
PHP
1
$ob_cl2->class_method();
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
10.04.2016, 04:13  [ТС]
Algoritmer, Для того, что бы обратиться к smarty, необходимо было добавить: "use Smarty;"
Что делать со статическим методом, так и не понял.
Вот у меня класс:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class db
{
    public static $mConnect;
    public static $mSelectDB;
    public static function Connect($host, $user, $pass, $name)
    {
        self::$mConnect = mysql_connect($host, $user, $pass);
        if(!self::$mConnect)
        {
            echo "<p><b>Не удалось подключиться к серверу MySQL</b></p>";
            exit();
            return false;
        }
        self::$mSelectDB = mysql_select_db($name, self::$mConnect);
        if(!self::$mSelectDB)
        {
            echo "<p><b>Не удалось найти БД</b></p>";
            exit();
            return false;
        }
        return self::$mConnect;
    }
    public static function Close()
    {
        return mysql_close(self::$mConnect);
    }
 
}
Мне надо к нему обратиться из класса:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace app\controllers;
use Smarty;
class MainController{
    public function index() 
    {
        
        echo 'Получилось!';
    }
    
    public function skin() 
    {
        $s = 'Тут что-то еще.';
        echo $s;
//db::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
        $smarty = new Smarty();
        $path = __DIR__;
        $smarty->assign('path', $path);
        $smarty->display('main.tpl');
        
    }
}
Что мне надо сделать?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.04.2016, 23:29
PHP
1
2
3
$db = db::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$res = mysql_query('SELECT ....', $db);
....
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
11.04.2016, 03:30  [ТС]
KOPOJI, не понял, чем это отличается от моего варианта, но ошибка такая же.
PHP
1
 Fatal error: require_once(): Failed opening required 'C:\server\Site\OpenServer\domains\rainforest\lk\app\controllers\db.php'
Я вот не пойму, в классе надо подключать этот файл? На index он подключен и все работает. Откуда взялась эта запись подключения, я вообще не понимаю, в папке controllers нет файла db.php Ну и для проверки, положил его туда. Пишет, что нет класса.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
16.04.2016, 14:00
Цитата Сообщение от Vassillissk Посмотреть сообщение
но ошибка такая же
надо было с этой ошибки и начинать.
Цитата Сообщение от Vassillissk Посмотреть сообщение
в классе надо подключать этот файл?
естественно.
Цитата Сообщение от Vassillissk Посмотреть сообщение
Откуда взялась эта запись подключения
ну, очевидно, где-то прописано
PHP
1
require_once 'db.php';
Цитата Сообщение от Vassillissk Посмотреть сообщение
Ну и для проверки, положил его туда
просто создали файл db.php ? Или же с кодом класса DB внутри?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2016, 14:00
Помогаю со студенческими работами здесь

Обращение к методам класса
почему обращение A::call(); не работает? &lt;?PHP class A { function parent_func(){echo &quot;parent&lt;br&gt;&quot;;} function test(){echo...

Обращение из свойства к разным полям класса
Доброго времени суток. У меня такая проблема, есть класс треугольников в нем определены поля a,b,c длины сторон треугольника. нужно создать...

Как избежать копипаста кода по разным классам? Объявить базовый?
Добрый день. Я сделал несколько наследников от контролов Devepress, заточенных под определенный проект. Наследовал следующим образом: ...

Можно ли разным классам работать друг с другом минуя main?
Здравствуйте! На java пишу достаточно давно, но всё никак руки до ООП не доходили (всё в static методы засовывал). Следующее приложение...

обращение к классам css
Есть css класс: &lt;style type=&quot;text/css&quot;&gt; .some { display: none; } &lt;/style&gt; И в теле документа: &lt;div...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru