За последние 24 часа нас посетили 17982 программиста и 1612 роботов. Сейчас ищут 959 программистов ...

вопросы по коду после перехода NetBeans->PhpStorm

Тема в разделе "Прочие вопросы по PHP", создана пользователем xfreewindx, 5 май 2012.

  1. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Здравствуйте!
    У меня возникло пара вопросов после опробования PhpStorm после Netbeans.
    Вот кусок кода класса. Функция delete обращается к функции dataBinding. На самом деле есть еще функции select, update, insert - они используются для работы с БД и каждая из них использует функцию dataBinding.
    Код (Text):
    1.  
    2. class MySQL {
    3. private function dataBinding(PDOStatement $stmt, array $args) {
    4.         foreach ($args as $key => &$value) {
    5.             if (is_numeric($value))
    6.                 $data_type = PDO::PARAM_INT;
    7.             else
    8.                 $data_type = PDO::PARAM_STR;
    9.             $stmt->bindParam($key, $value, $data_type);
    10. }
    11.  
    12.         return $stmt;
    13.     }
    14.  
    15. public function delete($query, $args) {
    16.         $pdo = $this->dbConnect();
    17.         $stmt = $pdo->prepare($query);
    18.         $this->dataBinding($stmt, $args);
    19.         $stmt->execute();
    20.  
    21.         return $pdo->lastInsertId();
    22. }
    23. }
    Код работает. Но когда я использовал NetBeans у меня не было уточнений типов для функции dataBinding, то есть она выглядела так:
    Код (Text):
    1.  
    2. private function dataBinding($stmt, $args) {
    3.         foreach ($args as $key => &$value) {
    4.             if (is_numeric($value))
    5.                 $data_type = PDO::PARAM_INT;
    6.             else
    7.                 $data_type = PDO::PARAM_STR;
    8.             $stmt->bindParam($key, $value, $data_type);
    9. }
    все работало прекрасно. Открыл этот код в PhpStorm, обратил внимание, что он показывает кучу ошибок и предупреждений. В часности касательно этого участка говорит, что типы не соответствуют нужно уточнить типы. Как только вписал уточнение типов, предупреждение исчезло. Так вот у меня пара вопросов:
    Я что-то недоучил по теории, что не знаю что в private функции нужно уточнение типов указывать? Когда вообще нужно их указывать? NetBeans про это молчал.
    PhpStorm видимо лучший редактор для Php, раз он такой умный, стоит обращать внимание на его предупреждения?

    Да и еще вопрос, у меня есть файл с переменными, которые используются для подключения к БД
    Код (Text):
    1.  
    2. <?php
    3. $hostname = 'qqq';
    4. $name = 'root';
    5. $password = '';
    6. и т.д.
    он подключается командой require_once ('m/db_config.php') в вышеописанном классе; Оба редактора выдают ошибки undefined variable $hostname, $name и т.д., то есть не видят этого подключаемого файла. Пробовал путь подкорректировать, но все равно. Можно как-то пофиксить?
     
  2. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Вы же у этой переменной вызываете метод ( $stmt->bindParam... ). Но тип переменной нигде не определен, вот от скорее всего и показывал вызов неизвестного метода, а может и предлагал уточнение типа... он умный, да. Куча проверок связанных именно с качеством кода.
    В шторме вроде как нужно в настройках проекта поставить корневую папку как "web resource root"
     
  3. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Сделал.
    Ошибки не исчезли, можно по-подробнее в каких настройках смотреть?
     
  4. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Ну в принципе разобрался. Подключил словарь русский, много предупреждений исчезло.
    Единственное, что не могу понять с автоматической проверкой кода, вот скажем у меня index.php в корне, в нем подключается файл к примеру require_once(c/Base.php); Шторм видит эту папку "с" и показывает зеленый индикатор в правом верхнем углу. А если у меня файл лежит в папке "с", но в нем подключается файл из другой папки скажем "m", то шторм выдает ошибку, горит красный индикатор, хотя скрипт работает. То есть он не видит файл в соседней папке, ну соответственно и переменные которые в нем определены, но при этом скрипт работает корректно. Не знаете как побороть?
    Да и не совсем понял как отлаживать скрипты. Нашел как это делается по шагам, а вот если мне нужно чтобы скрипт дошел до определенного шага и остановил. Надо Breakpoint ставить, но что-то он не реагирует что ли на них.