PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (13): В начало « ... 5 6 7 8 9 10 [11] 12 13 »

> Найдено сообщений: 192
imedia Отправлено: 01 Ноября, 2015 - 19:17:08 • Тема: Как обратиться к переменной в другой функции • Форум: Вопросы новичков

Ответов: 4
Просмотров: 223
vova3261
Да спасибо, но вот поче му то возникает ошибка при обращении через $this
Notice: Undefined property: User::$conn in /var/www/clients/client1/web28/w eb/protected/Main.php on line 47

Fatal error: Call to a member function query() on null in /var/www/clients/client1/web28/w eb/protected/Main.php on line 47

дело в том что этот контроллер расширяется контроллером UsersController который в свою очередь обращается к моделе User
А модель обращается к методу parent::insert('users', $data); Main контроллера
imedia Отправлено: 01 Ноября, 2015 - 15:50:56 • Тема: Как обратиться к переменной в другой функции • Форум: Вопросы новичков

Ответов: 4
Просмотров: 223
Есть функция
PHP:
скопировать код в буфер обмена
  1.  
  2. function conn() { // подключение к БД
  3.   $dbh = new PDO('mysql:host=site.com;dbname=c1site', 'c1site', 'sun');
  4. }
  5.  


Как обратиться к этому объекту из другой функции этого же класса
пробую так не получается
PHP:
скопировать код в буфер обмена
  1.  
  2. function insert(){
  3. $sql='INSERT ...'
  4. $this->conn->dbh->query($sql);
  5. }
  6.  
imedia Отправлено: 01 Ноября, 2015 - 13:54:05 • Тема: Понимание расширения класса • Форум: Объектно-ориентированное программирование

Ответов: 3
Просмотров: 950
Есть модель
PHP:
скопировать код в буфер обмена
  1.  
  2. class User {
  3. public function __construct()
  4. {
  5. print($this->statement());     
  6.  
  7. }
  8.  
  9.  


и сам класс
PHP:
скопировать код в буфер обмена
  1.  
  2. class Main {
  3.  
  4.         public $statment='preview';
  5.  
  6.         public function __construct()
  7.         {      
  8.         $this->statement='pre2';
  9.         print('main_construct');
  10.     }
  11.        
  12.         function state(){
  13.         $state_var =  'pre3';
  14.         }
  15.  


и есть класс из которого происходит обращение к модели
PHP:
скопировать код в буфер обмена
  1.  
  2. class UsersController extends Main {  
  3.  
  4.         public function __construct()
  5.         {
  6.         parent:: __construct();
  7.         $this->user=new User();
  8.         print($this->user->statement());
  9.         print($this->user->state->state_var());
  10.         }
  11.  

Fatal error: Call to undefined method User::statement() in /var/www/clients/client1/web28/w eb/protected/models/User.php on line 8 , подключаются классы в бутстрапе
PHP:
скопировать код в буфер обмена
  1.  
  2. require __DIR__ . '/Main.php';
  3. require __DIR__ . '/models/User.php';
  4.  

Вопрос как увидеть эти переменные обращаясь к модели из класса UsersController
думаю не стоит расширять модель ,достаточно что расширен класс обращающийся к модели.
imedia Отправлено: 31 Октября, 2015 - 17:31:19 • Тема: как настроить роутинг на чистом php • Форум: Вопросы новичков

Ответов: 6
Просмотров: 1229
Нашел Хороший роутер
и поэтому изменил начало темы, просьба знатокам подсказать как быть, попадаю на 404 исключение индекса
(Добавление)
а если не из формы заходить по этому адресу то срабатывает перенаправление, что Вы можете посоветовать
imedia Отправлено: 31 Октября, 2015 - 15:24:39 • Тема: Конфликт пространства имен • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 2998
Я вот так делаю и ошибка по вашей логикеFaraon-san
Не могу догнать этой структуры, вроде бы как вы сказали
PHP:
скопировать код в буфер обмена
  1.  
  2. namespace Main\UsersController;
  3.  
  4. class UsersController extends Main\UsersController\Main {  
  5.  

PHP:
скопировать код в буфер обмена
  1.  
  2. namespace Main\UsersController;
  3. class Main {
  4.  

PHP:
скопировать код в буфер обмена
  1.  
  2. spl_autoload_register(function ($class) {
  3.  
  4.     $path = __DIR__ . '/' . str_replace('\\', '/', $class) . '.php';
  5.  
  6.     if (is_file($path)) {
  7.         require $path;
  8.         return;
  9.     }
  10.  
  11.     throw new \LogicException(sprintf('Class "%s" not found in "%s"', $class, $path));
  12. });
  13. require __DIR__ . '/Main/UsersController/Main.php';
  14. require __DIR__ . '/func.php';
  15. require __DIR__ . '/AppController.php';
  16. require __DIR__ . '/Main/UsersController/UsersController.php';
  17.  

Fatal error: Uncaught exception 'LogicException' with message 'Class "Main\UsersController\Main\UsersController\Main" not found in "/var/www/clients/client1/web28/web/protected/Main/UsersController/Main/UsersController/Main.php"' in /var/www/clients/client1/web28/web/protected/bootstrap.php:15 Stack trace: #0 [internal function]: {closure}('Main\\UsersContr...') #1 /var/www/clients/client1/web28/web/protected/Main/UsersController/UsersController.php(4): spl_autoload_call('Main\\UsersContr...') #2 /var/www/clients/client1/web28/web/protected/bootstrap.php(20): require('/var/www/client...') #3 /var/www/clients/client1/web28/web/index.php(3): require('/var/www/client...') #4 {main} thrown in /var/www/clients/client1/web28/w eb/protected/bootstrap.php on line 15
imedia Отправлено: 31 Октября, 2015 - 14:10:31 • Тема: Конфликт пространства имен • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 2998
Что то я все равно не понимаю, сейчас я тоже изменил как Вы сказали, Мелкий
но та же ошибка
Fatal error: Uncaught exception 'LogicException' with message 'Class "Main\UsersController\UsersController\Main" not found in "/var/www/clients/client1/web28/web/protected/Main/UsersController/UsersController/Main.php"' in /var/www/clients/client1/web28/web/protected/bootstrap.php:15 Stack trace: #0 [internal function]: {closure}('Main\\UsersContr...') #1 /var/www/clients/client1/web28/web/protected/Main/UsersController/UsersController.php(4): spl_autoload_call('Main\\UsersContr...') #2 /var/www/clients/client1/web28/web/protected/bootstrap.php(20): require('/var/www/client...') #3 /var/www/clients/client1/web28/web/index.php(3): require('/var/www/client...') #4 {main} thrown in /var/www/clients/client1/web28/w eb/protected/bootstrap.php on line 15
imedia Отправлено: 30 Октября, 2015 - 22:41:01 • Тема: Конфликт пространства имен • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 2998
А что тогда эта ошибка говорит? простите отредактировал фрагменты кода. о чем же все таки эта ошибка
imedia Отправлено: 30 Октября, 2015 - 22:22:03 • Тема: Конфликт пространства имен • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 2998
Что вызывает конфликт и как правильно ?

Fatal error: Uncaught exception 'LogicException' with message 'Class "Main\UsersController\UsersController\Main" not found in "/var/www/clients/client1/web28/web/protected/Main/UsersController/UsersController/Main.php"' in /var/www/clients/client1/web28/web/protected/bootstrap.php:15 Stack trace: #0 [internal function]: {closure}('Main\\UsersContr...') #1 /var/www/clients/client1/web28/web/protected/Main/UsersController/UsersController.php(4): spl_autoload_call('Main\\UsersContr...') #2 /var/www/clients/client1/web28/web/protected/bootstrap.php(20): require('/var/www/client...') #3 /var/www/clients/client1/web28/web/index.php(3): require('/var/www/client...') #4 {main} thrown in /var/www/clients/client1/web28/w eb/protected/bootstrap.php on line 15
PHP:
скопировать код в буфер обмена
  1.  
  2. namespace Main\UsersController\UsersController;
  3. class UsersController extends Main {
  4.  
  5.         public function __construct()
  6.         {
  7.         parent:: __construct();
  8.         $this->load->helper('url');
  9.         }
  10.  


PHP:
скопировать код в буфер обмена
  1.  
  2. namespace Main\UsersController\Main;
  3. class Main {
  4.  
  5. public function _construct(){
  6. print('Main_construct');
  7. }
  8.  
  9.  

bootstrap
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. ini_set('display_errors', 'on');
  4.  
  5. spl_autoload_register(function ($class) {
  6.  
  7.     $path = __DIR__ . '/' . str_replace('\\', '/', $class) . '.php';
  8.  
  9.     if (is_file($path)) {
  10.         require $path;
  11.         return;
  12.     }
  13.  
  14.     throw new \LogicException(sprintf('Class "%s" not found in "%s"', $class, $path));
  15. });
  16. require __DIR__ . '/Main/Main.php';
  17. require __DIR__ . '/func.php';
  18. require __DIR__ . '/AppController.php';
  19. require __DIR__ . '/Main/UsersController.php';
  20.  
  21.  
imedia Отправлено: 30 Октября, 2015 - 21:51:12 • Тема: Почему у меня не удается расширить класс • Форум: Корзина

Ответов: 2
Просмотров: 1060
Fatal error: Uncaught exception 'LogicException' with message 'Class "UsersController\Main" not found in "/var/www/clients/client1/web28/web/protected/UsersController/Main.php"' in /var/www/clients/client1/web28/web/protected/bootstrap.php:15 Stack trace: #0 [internal function]: {closure}('UsersController...') #1 /var/www/clients/client1/web28/web/protected/UsersController.php(4): spl_autoload_call('UsersController...') #2 /var/www/clients/client1/web28/web/protected/bootstrap.php(20): require('/var/www/client...') #3 /var/www/clients/client1/web28/web/index.php(3): require('/var/www/client...') #4 {main} thrown in /var/www/clients/client1/web28/w eb/protected/bootstrap.php on line 15
PHP:
скопировать код в буфер обмена
  1.  
  2. namespace UsersController;
  3. class UsersController extends Main {
  4.  
  5.         public function __construct()
  6.         {
  7.         parent:: __construct();
  8.         $this->load->helper('url');
  9.         }
  10.  


PHP:
скопировать код в буфер обмена
  1.  
  2. namespace Main;
  3. class Main {
  4.  
  5. public function _construct(){
  6. print('Main_construct');
  7. }
  8.  
  9.  

bootstrap
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. ini_set('display_errors', 'on');
  4.  
  5. spl_autoload_register(function ($class) {
  6.  
  7.     $path = __DIR__ . '/' . str_replace('\\', '/', $class) . '.php';
  8.  
  9.     if (is_file($path)) {
  10.         require $path;
  11.         return;
  12.     }
  13.  
  14.     throw new \LogicException(sprintf('Class "%s" not found in "%s"', $class, $path));
  15. });
  16. require __DIR__ . '/Main.php';
  17. require __DIR__ . '/func.php';
  18. require __DIR__ . '/AppController.php';
  19. require __DIR__ . '/UsersController.php';
  20.  
  21.  
imedia Отправлено: 28 Октября, 2015 - 20:48:32 • Тема: как настроить роутинг на чистом php • Форум: Вопросы новичков

Ответов: 6
Просмотров: 1229
Здесь был Klain, но я решил обойтись другим роутером потому изменил начало темы
imedia Отправлено: 28 Октября, 2015 - 12:49:20 • Тема: как настроить роутинг на чистом php • Форум: Вопросы новичков

Ответов: 6
Просмотров: 1229
Найдя наиболее удачный пример в интернете я решил его выложить здесь
index.php
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. require __DIR__ . '/protected/bootstrap.php';
  4.  
  5. use Routing\Router;
  6. use Routing\MatchedRoute;
  7.  
  8. try {
  9.  
  10.     $router = new Router(GET_HTTP_HOST());
  11.     $router->add('home', '/', 'AppController:homeAction');
  12.     $router->add('register', '/register', 'AppController:registerAction');
  13.         $router->add('registration','/registration', 'UsersController:register');
  14.     $router->add('contacts', '/contacts', 'AppController:contactsAction');
  15.     $router->add('user','/user/(id:num)', 'AppController:userAction');
  16.  
  17.     $route = $router->match(GET_METHOD(), GET_PATH_INFO());
  18.  
  19.     if (null == $route) {
  20.         $route = new MatchedRoute('AppController:error404Action');
  21.     }
  22.  
  23.     list($class, $action) = explode(':', $route->getController(), 2);
  24.  
  25.     call_user_func_array(array(new $class($router), $action), $route->getParameters());
  26.  
  27. } catch (Exception $e) {
  28.  
  29.     header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
  30.  
  31.     echo $e->getMessage();
  32.     echo $e->getTraceAsString();
  33.     exit;
  34. }
  35.  


Router.php
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. namespace Routing;
  4.  
  5. class Router
  6. {
  7.     private $routes = array();
  8.     private $host;
  9.     private $mather;
  10.     private $generator;
  11.  
  12.     public function __construct($host)
  13.     {
  14.         $this->host = $host;
  15.     }
  16.  
  17.     public function add($name, $pattern, $controller, $method = 'GET')
  18.     {
  19.         $this->routes[$name] = array(
  20.             'pattern' => $pattern,
  21.             'controller' => $controller,
  22.             'method' => $method,
  23.         );
  24.     }
  25.  
  26.     /**
  27.      * @param $method
  28.      * @param $uri
  29.      * @return MatchedRoute
  30.      */
  31.     public function match($method, $uri)
  32.     {
  33.         return $this->getMatcher()->match($method, $uri);
  34.     }
  35.  
  36.     public function generate($name, array $parameters = array(), $absolute = false)
  37.     {
  38.         return $this->getGenerator()->generate($name, $parameters, $absolute);
  39.     }
  40.  
  41.     /**
  42.      * @return UrlMatcher
  43.      */
  44.     private function getMatcher()
  45.     {
  46.         if (null == $this->mather) {
  47.             $this->mather = new UrlMatcher();
  48.             foreach ($this->routes as $route) {
  49.                 $this->mather->register($route['method'], $route['pattern'], $route['controller']);
  50.             }
  51.         }
  52.  
  53.         return $this->mather;
  54.     }
  55.  
  56.     /**
  57.      * @return UrlGenerator
  58.      */
  59.     private function getGenerator()
  60.     {
  61.         if (null == $this->generator) {
  62.             $this->generator = new UrlGenerator($this->host);
  63.             foreach ($this->routes as $name => $route) {
  64.                 $pattern = preg_replace('#\((\w+):(\w+)\)#', '(:$1)', $route['pattern']);
  65.                 $this->generator->add($name, $pattern);
  66.             }
  67.         }
  68.  
  69.         return $this->generator;
  70.     }
  71. }
  72.  


Но я например попал в затруднение когда в экшене формы указал /registration
я хотел было чтобы класс UsersController/registration сработал но в ответ получил исключение 404 ошибки роутера, можете объяснить что не так
imedia Отправлено: 27 Октября, 2015 - 01:18:59 • Тема: организация ЧПУ на сайте • Форум: Вопросы новичков

Ответов: 2
Просмотров: 145
Что надо прописать в htaccess чтобы можно былобы обращаться непосредственно к функции класса

Например когда я так обращаюсь к функции register я имею index.php
site.ru/users/register
вот мой htaccess
PHP:
скопировать код в буфер обмена
  1.  
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^(.*)$ index.php [L,QSA]
  6. Options +FollowSymlinks
  7.  
imedia Отправлено: 26 Октября, 2015 - 21:34:45 • Тема: 404 ошибка при обращении к файлу • Форум: Вопросы новичков

Ответов: 0
Просмотров: 67
Пытаюсь обратиться к классу который в корне находится
site.ru/users/foo

получаю 404 ошибку, помогите

.htaccess
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Options +FollowSymLinks
  3. Options -Indexes
  4. DirectoryIndex index.php
  5. RewriteEngine on
  6.  
imedia Отправлено: 26 Октября, 2015 - 19:22:15 • Тема: Почему я не могу вызвать фукцию подключенного класса • Форум: Вопросы новичков

Ответов: 1
Просмотров: 138
PHP:
скопировать код в буфер обмена
  1.  
  2. require_once('Main.php');
  3. function index() {
  4. $class= new Main();
  5. $class->view('login_view');
  6. }
  7.  


PHP:
скопировать код в буфер обмена
  1.  
  2. class Main {
  3.  
  4. public $base_dir='/views/';
  5.  
  6. public function index(){
  7. print('main_index');
  8. }
  9.  
  10. public function view($view){
  11. require_once ($base_dir.$view.'.php');
  12. }
  13.  
  14. }
  15.  

Почему то не происходит подключение шаблона
imedia Отправлено: 25 Октября, 2015 - 22:33:05 • Тема: помогите сориентироваться как составлять запрос к базе • Форум: Вопросы новичков

Ответов: 0
Просмотров: 51
Есть массив

Array
(
[0] => Array
(
[id_pages_filter] => 1
[name_field] => автор
[main_field] => pages.author
[linked_table] => authors
[linked_field] => id_author
)

[1] => Array
(
[id_pages_filter] => 2
[name_field] => шаблон
[main_field] => pages.layout
[linked_table] => layouts
[linked_field] => layout_id
)

[2] => Array
(
[id_pages_filter] => 3
[name_field] => дата
[main_field] => pages.page_creation_date
[linked_table] =>
[linked_field] =>
)

)

Необходимо
//для каждого ключа массива выбрать уникальные значения из таблицы указанной в элементе массива [main_field]
//соединив и выбрав информацию из сопряженной таблицы указанной в элементе массива [linked_table] соединительным полем является элемент массива [linked_field]
Важно чтобы повторяющиеся значения встречающиеся в [main_field] не учитывались а были бы уникальными
результатом должен быть массив следующего вида


Array
(
[0] => Array
(
[name_filter] => 'автор'
[0] => Фисалович
[1] => Гарбузевич
//потому что в таблице pages только 2 уникальных автора
)

[1] => Array
(
[name_filter] => шаблон
[0] => smart_layout
//потому что в таблице pages только один уникальный шаблон и он для всех страниц
)

[2] => Array
(
[name_filter] => дата
[0] => 12.01.15
[1] => 13.01.15
[2] => 14.01.15
[3] => 15.01.15

)

)

Страниц (13): В начало « ... 5 6 7 8 9 10 [11] 12 13 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB