За последние 24 часа нас посетили 34147 программистов и 1314 роботов. Сейчас ищут 927 программистов ...

Ошибка, php. Сразу говорю перевёл. Но понять почему не могу.

Тема в разделе "PHP для новичков", создана пользователем askanim, 30 июн 2016.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Fatal error: Call to a member function emailString() on null Вот такая ошибка.

    В строке вот в этой

    PHP:
    1. $this->cfe->emailString($string);
    Вот где лежит сам метод

    PHP:
    1. public function emailString ($value) {
    2.         /*
    3.          * Публичная функция
    4.          * проверяющая правильность
    5.          * введённого почтового ящика
    6.          *
    7.          *
    8.          * */
    9.         echo $value;
    10.         if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
    11.             $this->err[] = "Email указан не правильно";
    12.         }
    13.     }
    Что такое
    PHP:
    1. $this->cfe // ????
    То это вот созданный объект класса cfe
    PHP:
    1.  
    2. public function __construct()
    3. {
    4.     $this->cfe = new CFE();
    5. }
    Почему то не пробевает до метода даже эту строчку почему не знаю

    А что думаете у меня лежит в
    PHP:
    1. $string
    То вот что я туда передаю
    bk@bk.ru

    Выводится перед функцией прекрасно но какого то чёрта не входит вы эту функцию.... :(
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    весь код покажи
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: askanim
    5. * Date: 21.06.2016
    6. * Time: 11:00
    7. */
    8.  
    9. namespace App\Models\Admin\Users;
    10.  
    11. use System\Http\Model\Auth\Users As RegisterUser;
    12. use System\Http\Model\Model;
    13. class Users extends Model
    14. {
    15.     public function login () {
    16.  
    17.         $register = new RegisterUser();
    18.  
    19.         $register->getId('id')
    20.             ->submit('submit')
    21.             ->email('user_email') // Вот здесь вхожу в проверку идёт вызов функции
    22.             ->password('user_password')
    23.             ->getLogin('Users', 'user_email','user_password', 'user_group');
    24.     }
    25.     public function register () {
    26.         $register = new RegisterUser();
    27.         $register->getRegistration();
    28.     }
    29. }
    из скрипта AuthProtect.php
    --- Добавлено ---
    PHP:
    1. <?php
    2.  
    3.  
    4. namespace System\Gabriel;
    5.  
    6.  
    7. class AuthProtect
    8. {
    9.     protected $submit;
    10.     protected $login;
    11.     protected $firstName;
    12.     protected $secondName;
    13.     protected $email;
    14.     protected $tel;
    15.     protected $password;
    16.     protected $checkPassword;
    17.     protected $input;
    18.     protected $text;
    19.     protected $check;
    20.     protected $hash;
    21.     protected $cfe;
    22.     public function __construct()
    23.     {
    24.         $this->cfe = new CFE();
    25.     }
    26.  
    27.     public function submit($string) {
    28.         if (isset($_POST[$string])){
    29.             $this->submit = $_POST[$string];
    30.             return $this;
    31.         }
    32.         return $this;
    33.     }
    34.     public function login($string) {
    35.         if (!empty($_POST[$string])) {
    36.             $string = strip_tags($_POST[$string]);
    37.             $this->cfe->enLengthString($string);
    38.             $this->login = $string;
    39.             return $this;
    40.         }
    41.         return $this;
    42.     }
    43.     public function fName($string, $min = 3, $max = 30) {
    44.         if (!empty($_POST[$string])) {
    45.             $string = strip_tags($_POST[$string]);
    46.             $this->cfe->enRusString($string);
    47.             $this->cfe->lengthString($string, $min, $max);
    48.             $this->firstName = $string;
    49.             return $this;
    50.         }
    51.         return $this;
    52.     }
    53.     public function sName($string, $min = 3, $max = 30) {
    54.         if (!empty($_POST[$string])) {
    55.             $string = strip_tags($_POST[$string]);
    56.             $this->cfe->enRusString($string);
    57.             $this->cfe->lengthString($string, $min, $max);
    58.             $this->secondName = $string;
    59.             return $this;
    60.         }
    61.         return $this;
    62.  
    63.     }
    64.     public function email($string)
    65.     {
    66.  
    67.         if (!empty($_POST[$string])) {
    68.             $string = strip_tags($_POST[$string]);
    69.             echo $string;
    70.             $this->cfe->emailString('bk@bk.ru');
    71.             exit();
    72.             $this->email = $string;
    73.             return $this;
    74.         }
    75.         return $this;
    76.     }
    77.     public function tel ($string) {
    78.         if (!empty($_POST[$string])) {
    79.             $string = strip_tags($_POST[$string]);
    80.             $this->cfe->telString($string);
    81.             $this->tel = $string;
    82.             return $this;
    83.         }
    84.         return $this;
    85.     }
    86.     public function password($string, $min = 8, $max = 30) {
    87.         if (!empty($_POST[$string])) {
    88.             $string = strip_tags($_POST[$string]);
    89.             $this->cfe->enLengthString($string, $min, $max);
    90.             $this->password = $string;
    91.             return $this;
    92.         }
    93.         return $this;
    94.     }
    95.     public function checkPassword($string) {
    96.         if (!empty($_POST[$string])) {
    97.             $string = strip_tags($_POST[$string]);
    98.             $this->cfe->doubleString($this->password, $string);
    99.             return $this;
    100.         }
    101.         return $this;
    102.     }
    103.     public function input($string) {
    104.         if (!empty($_POST[$string])) {
    105.             $string = strip_tags($_POST[$string]);
    106.             return $this;
    107.         }
    108.         return $this;
    109.     }
    110.     public function text($string) {
    111.         if (!empty($_POST[$string])) {
    112.             $string = strip_tags($_POST[$string]);
    113.             $this->text = $string;
    114.             return $this;
    115.         }
    116.         return $this;
    117.     }
    118.     public function check($string) {
    119.         if (!empty($_POST[$string])) {
    120.             $check = $_POST[$string];
    121.             $this->cfe->checked($check);
    122.             $this->check = $check;
    123.             return $this;
    124.         }
    125.         return $this;
    126.     }
    127.     public function hash($string) {
    128.         $this->hash = $string;
    129.         return $this;
    130.     }
    131.  
    132. }
    --- Добавлено ---
    PHP:
    1. <?php
    2.  
    3. namespace System\Gabriel;
    4.  
    5.  
    6. class CFE
    7. {
    8.     private $err;
    9.     private $name;
    10.     private $login;
    11.     private $tel;
    12.     private $password;
    13.     private $cPassword;
    14.     private $email;
    15.     private $check = [];
    16. //CFE  = Checking for errors (Система защиты Input полей)
    17.     public function getName($value)
    18.     {
    19.         $this->name = $value;
    20.         return $this;
    21.     }
    22.     public function getLogin($value)
    23.     {
    24.         $this->login = $value;
    25.         return $this;
    26.     }
    27.     public function getTel($value)
    28.     {
    29.         $this->tel = $value;
    30.         return $this;
    31.     }
    32.     public function getPassword($value)
    33.     {
    34.         $this->password = $value;
    35.         return $this;
    36.     }
    37.     public function getCPassword($value)
    38.     {
    39.         $this->cPassword = $value;
    40.         return $this;
    41.     }
    42.     public function getEmail($value)
    43.     {
    44.         $this->email = $value;
    45.         return $this;
    46.     }
    47.     public function getCheck($value)
    48.     {
    49.         $this->check[] = $value;
    50.         return $this;
    51.     }
    52.     public function enRusString ($value) {
    53.         /*
    54.          * Публичная функция
    55.          * проверяющая входящую строку
    56.          * На Русский-Английский Алфавит
    57.          *
    58.          *
    59.          * */
    60.         if (!preg_match("/^[а-яА-Яa-zA-Z]+$/", $value)) {
    61.             $this->err[] = "Текст в поле ".$value.' может состоять только из букв Русского или Английского алфавита';
    62.         }
    63.     }
    64.     public function rusString ($value) {
    65.         /*
    66.          * Публичная функция
    67.          * проверяющая входящую строку
    68.          * На Русский Алфавит
    69.          *
    70.          *
    71.          * */
    72.         if (!preg_match("/^[а-яА-Я]+$/", $value)) {
    73.             $this->err[] = "Текст в поле ".$value.' может состоять только из букв Русского алфавита';
    74.         }
    75.     }
    76.     public function emailString ($value) {
    77.         /*
    78.          * Публичная функция
    79.          * проверяющая правильность
    80.          * введённого почтового ящика
    81.          *
    82.          *
    83.          * */
    84.         echo $value;
    85.         if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
    86.             $this->err[] = "Email указан не правильно";
    87.         }
    88.         return $value;
    89.     }
    90.     public function checked($value) {
    91.         /*
    92.          * Публичная функция проверяющая
    93.          * был ли нажат Ваш input
    94.          *
    95.          *
    96.          * */
    97.         if (!isset($value)) {
    98.             $this->err[] = "Ваш check не был нажат";
    99.         }
    100.     }
    101.     public function doubleString($valueOne, $valueTwo) {
    102.         /*
    103.          * Публичная функция
    104.          * Позволяющая сравнить коррекцию
    105.          * двух одинаковых полей
    106.          *
    107.          *
    108.          * */
    109.         if ($valueOne != $valueTwo) {
    110.             $this->err[] = "Ваши пароли не совподают";
    111.         }
    112.     }
    113.     public function enLengthString($value, $min = 3, $max = 30) {
    114.         /*
    115.          * Функция проверяет длину написания текста
    116.          * и То что введённый текст состоит только из Английских букв
    117.          *
    118.          *
    119.          * */
    120.  
    121.         $this->enString($value);
    122.         $this->lengthString($value, $min, $max);
    123.  
    124.     }
    125.     public function enString ($value) {
    126.         /*
    127.          * Публичная функция
    128.          * Позволяет проверить Передоваемую строку $value
    129.          * На наличее в ней только Английских букв
    130.          *
    131.          *
    132.          * */
    133.  
    134.         if (!preg_match("/^[a-zA-Z0-9]+$/", $value)) {
    135.             $this->err[] = "Текст в поле ".$value.' может состоять только из букв и цифр английского алфавита';
    136.         }
    137.     }
    138.     public function lengthString ($value, $min = 3 , $max=30) {
    139.         /*
    140.          * Публичная функция
    141.          * озволяет проверить длину вводимого текста $value
    142.          * где минимум символов это $min, а максимум $max
    143.          * По умолчанию $min = 3
    144.          * А $max = 30
    145.          *
    146.          *
    147.          *
    148.          * */
    149.         if (strlen($value) < $min or strlen($value) > $max) {
    150.             $this->err[] = "Текст в поле ".$value.' не может быть меньше '.$min.' и больше '.$max.' символов';
    151.         }
    152.     }
    153.     public function telString ($value) {
    154.         /*
    155.          * Публичная функция позволяющая проверить
    156.          * Длину вводимого телефона, учитывая +7
    157.          * и его правонаписание.
    158.          *
    159.          * */
    160.  
    161.         if (!preg_match("/((8|\+7)-?)?\(?\d{3,5}\)?-?\d{1}-?\d{1}-?\d{1}-?\d{1}-?\d{1}((-?\d{1})?-?\d{1})?/", $value)) {
    162.             $this->err[] = "Пожалуйста введите телефон в формате +79998884434 либо 89998884434";
    163.         }
    164.         $this->lengthString($value, 12, 12 );
    165.     }
    166.  
    167.     public function getError () {
    168.         /*
    169.          * Публичная функция
    170.          * Возвращает полученное массив, ошибок во время проверки.
    171.          *
    172.          *
    173.          * */
    174.         return $this->err;
    175.     }
    176. }
    --- Добавлено ---
    76 строка в классе CFE там находится этот метод, и какого то он не вызывается. Почему :?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ещё RegisterUser не показал. Подозреваю, что ты там унаследованный конструктор забыл вызвать. В php они автоматом не вызываются
    --- Добавлено ---
    А, ну то есть System\Http\Model\Auth\Users
     
    askanim нравится это.
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    А ты дампил $this->cfe перед вызовом из него метода emailString()?
     
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    нет не дампил самое обидное что уже дома я. :( Завтра на работе только посмотрю что сказали. так что уже завтра отпишу :(
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    эм... а как же сервер разработки, версирование кода, децентрализованная разработка?
     
    askanim и denis01 нравится это.
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal есть нюанс, я этого не делал, потому что в данный момент проект абсолютно локальный.
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    А как этот нюанс относится к децентрализованной разработке и версированию кода?
     
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    на самом деле я про это только мельком слышал и не шарю как это сделать.... сейчас читаю
    --- Добавлено ---
    На самом деле не могу влупить не хватает, источников информации понять, что к чему, а перелапачивать интернет пока времени нет. Работы дофига.
     
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ты прямо вангуешь, точно под вечер уже запыхался, у меня же это наследуемы класс. вот так надо было сделать
    PHP:
    1. public function __construct()
    2.     {
    3.         $this->db = new Model();
    4.         parent::__construct();
    5.     }
    А я при вызове того класса, не вызывал конструктор, класса родителя и было вот так
    PHP:
    1. public function __construct()
    2.     {
    3.         $this->db = new Model();
    4.     }