За последние 24 часа нас посетили 16795 программистов и 1643 робота. Сейчас ищут 848 программистов ...

Превозмогания тред

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

  1. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    есть книги про логику, там и теория и задачи на практику
     
    Danil005 нравится это.
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    многим по душе картинки разглядывать :)
    --- Добавлено ---
    а начать можно с легкого ctrl + c и в гугл мануал and примеры (не копируя тупо примеры). А с опытом придет и оптимизация тривиальных задач. Позже придет Лень и скажет - друг чейт мне лениво кодить, когда посмотришь на свои скрипты. :D Там надо подправить, тут системку переписать, а может еще сильнее логичнее есть.. в одну строку ?! Короче... register_shudown_function( [ The, end ] )
     
  3. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    А без фрейморка разве нельзя? Без него по-моему интересней. Ну по крайне мере мне намного интереснее все с нуля делать, нежели брать готовое. )
    Да к тому же легче научиться будет использовать все функции PHP, нежели спрятанные уже в фрейморком и выполняемые простыми функциями. Проще говоря, так можно познать намного больше.

    А на счет урока, попробуй этот, он не идеален, но все же. Жмяк
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
     
    denis01, MouseZver и Danil005 нравится это.
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
  6. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    Как только количество проектов и их сложность возрастает. А лень быстрее всех преодолевает высоты.
    Понимаешь что без фреймворка уже никуда.
    Каждый раз ты используешь в проектах одни и теже функции.
    Подключение к бд, авторизация, вообще работа с бд.
    Много наработанных классов, функций.
    И каждый раз все переписывать с 0 ? нет.
    Тут уже фреймворк спасает. и своя базовая настройка.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Если, конечно, ты к этому времени еще не написал собственный фрейм, лалала :)
     
  8. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    Скорее всего фреймворк в фреймворке)
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Однако, это курс по фреймворку. Я бы не стал давать надежду, что возможен видеокурс, пригодный для обучению программированию с нуля знаний.
     
    #734 [vs], 20 авг 2017
    Последнее редактирование: 20 авг 2017
  10. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Написать свой фрейморк один раз, удобный для тебя, и не возвращаться к этой теме. )
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну если ты уверен в том, что напишешь лучше, чем Laravel, Symfony, Zend и прочие. Я вот что-то про себя сомневаюсь
     
  12. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Да, я не уверен, но кол-во функций будет появляться по мере их необходимости, поэтому весьма весомо это. Ты учишься сам, получаешься драгоценный опыт, ну и хорошо понимаешь свой код и знаешь как работает защита, да и к тому же можно оставить лазейки для себя (Мало ли что случается).
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Кодить надо, не важно, что.
     
  14. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    comments.txt
    PHP:
    1. Вася; Комментарий 1
    2. Петя; Комментарий 2
    3. Коля; Комментарий 3
    controller.php

    PHP:
    1. <?php
    2. require_once "model.php";
    3. if (isset($_POST["addComment"])) addComment ($_POST["name"], $_POST["comment"]);
    4. $array = transformCommentsToArray();
    5. require_once "wiev.html";
    6. ?>
    index.php
    PHP:
    1. <html>
    2. <head>
    3. </head>
    4. <body>
    5. <h1>Статья</h1>
    6. <p>Текст статьи ...</p>
    7. <h2>Комментарий</h2>
    8. <?php
    9.  
    10. if (count($array) !=0){
    11.    echo"<table>";
    12.    for ($i = 0; $i < count($array); $i++){
    13.    echo "<tr>";
    14.    echo "<td><b>".$array[$i]["name"]."</b></td>";
    15.    echo "<td><b>".$array[$i]["comment"]."</b></td>";
    16.    echo "</tr>";
    17.    echo "<tr>";
    18.    echo "<td colspan='2'><br /></td>";
    19.    echo "</tr>";
    20.  
    21.      
    22.    echo"</table>";
    23.  
    24.  
    25.    }
    26. }
    27.  
    28. ?>
    29. </body>
    30. </html>

    model.php


    PHP:
    1. <?php
    2. function transformCommentsToArray(){
    3.    $string = file_get_contents("comments.txt");
    4.    $array = explode("\n", $string);
    5.    $result = array();
    6.    for ($i = 0; $i < count($array); $i++){
    7.      $data = explode(";", $array[$i]);
    8.      $result[$i]["name"] = $data[0];
    9.      $result[$i]["comment"] = $data[1];
    10.  
    11.    }
    12.    return $result;
    13. }
    14. function addComment($name, $comment){
    15.      $string = file_get_contents("comments.txt")."\n$name;$comment";
    16.      file_put_contents("comments.txt", $string);
    17.  
    18. }
    19.  
    20. ?>
    wiev.html

    PHP:
    1. <html>
    2. <head>
    3. </head>
    4. <body>
    5. <h1>Статья</h1>
    6. <p>Текст статьи ...</p>
    7. <h2>Комментарий</h2>
    8. <?php if (count($array) !=0){?>
    9.    <table>
    10.    <?php for ($i = 0; $i < count($array); $i++) {?>
    11.    <tr>
    12.    <td><b><?php=$array[$i]["name"]?>:</b></td>
    13.    <td><?php=$array[$i]["comment"]?></td>
    14.    </tr>
    15.    <tr>
    16.    <td colspan='2'><br /></td>
    17.    </tr>
    18.  
    19.      <?php}?>
    20.    </table>
    21.    
    22. <?php}?>
    23. <h3>Добавить комментарий</h3>
    24. <form name="myform" action="controller.php" method="post">
    25. <table>
    26. <tr>
    27. <td>Имя</td>
    28. <td>
    29. <input type="text" name="name" />
    30. </td>
    31. </tr>
    32. <tr>
    33. <td>Комментарий</td>
    34. <td>
    35. <textarea name="comment" cols="20" rows="3"></textarea>
    36. </td>
    37. </tr>
    38. <tr>
    39. <td colspan="2">
    40. <input type="submit" name="addComment" value="Добавить" />
    41. </td>
    42. </tr>
    43. </table>
    44. </form>
    45. </body>
    46. </html>
     
  15. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    PHP:
    1. <?php}?>
    что это за чудо
     
  16. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    это мвц
     
  17. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    чёёё...:eek:..это ошибка...
     
  18. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    открыл и закрыл
     
  19. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Больше смущает, что это такое?
    --- Добавлено ---
    И тут ошибка )
    Нельзя делать так <?php}?>
    --- Добавлено ---
    PHP:
    1. <?php if (count($array) !=0){?>
    2.    <table>
    3.    <?php $count_array=count($array);
    4.     for ($i = 0; $i < $count_array; $i++) {?>
    5.    <tr>
    6.    <td><b><?=$array[$i]["name"]?>:</b></td>
    7.    <td><?=$array[$i]["comment"]?></td>
    8.    </tr>
    9.    <tr>
    10.    <td colspan='2'><br /></td>
    11.    </tr>
    12.      <?}?>
    13.    </table>
    14.  
    15. <?}?>
    И еще, count($array) делай перед циклом, ты так нагружаешь его, потому что после каждого цикла он опять обращается к count($array);
     
  20. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я считаю, что начинать с готовой системы веселее.
     
  21. teleoperator

    teleoperator Зэк
    [ БАН ]

    С нами с:
    3 июл 2017
    Сообщения:
    107
    Симпатии:
    29
    Народ, да если есть желание и голова на плечах, то возможно все. Не боги горшки обжигают. Проблема по существу в том, что этому товарищу уже давали и курсы, и подсказывали, и носом тыкали, ему как об стенку горох. Хочет сегодня и быстро и много получать. Сидеть и думать не его. Он хочет что бы видюшку посмотреть и резко стать умным и талантливым и высокооплачиваемым програмистом. Он более полугода назад начал вопросы задать свои тупые, типа "не выводится почему", и до сих пор даже синтаксис и чтение ошибок не освоил. О чем тут говорить, какие видеокурсы...
     
    Danil005 и Fell-x27 нравится это.
  22. xaker01

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

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    PHP:
    1. <?php=$array[$i]["name"]?>
    или еще короче запись
    PHP:
    1. <?=$value;?>
    это понятно, это полный аналог
    PHP:
    1. <?php echo $value; ?>
     
  23. alexpride1993

    alexpride1993 Новичок

    С нами с:
    28 мар 2016
    Сообщения:
    56
    Симпатии:
    20
    Не хочу показаться резким, но это потому что в представленном коде не правильно всё и это не MVC.

    Начнем с файла index.php. В нем не должно быть никакого html, вообще никакого. В этом файле должна осуществляться первоначальная загрузка классов (lazy load и namespace`s расписывать не буду, пока подключайте все классы, только следите чтобы их имена не дублировались, когда у вас будет 50+ строчек аля require_once() сами в сторону lazy load посмотрите), используемых в вашем приложении, инициализация роутера, задача которого - обработать URL к которому обратился пользователь, и дернуть метод определенного контроллера, ассоциируя пути с которым прописывается либо явно, формируя список допустимых маршрутов:
    Route::get('/Account/LogOn', 'Auth\LoginController@login');
    Либо не явно, тогда при поступлении запроса виде "/Account/LogOn" роутер будет искать AccountController и метод LogOnAction и вызывать его если находит.
    При том в роутере хорошо бы сформировать из полей запроса пользователя, его кукисов и данных клиента объект Request, который и будет передаваться в контроллер. а дальше обрабатываться им.

    Далее - контроллер. Во первых, как я говорил выше контроллер должен быть классом, а не просто строчками кода, даже не разбитыми по функциям.
    Во вторых, для возвращения вида лучше определить функцию, например returnHTML, которую расположить в базовом контроллере, от которого вам нужно будет унаследовать ваши контроллеры. Задача тут - ограничить область видимости переменных шаблона, в эту функцию следует передавать путь шаблона и те данные, которые нужно в нем отображать, например в следующем виде (код с множеством упрощений и допущений, просто чтобы примерно показать логику):

    PHP:
    1. class AccountController extends BaseController
    2. {
    3.  
    4.     public function LogOnAction()
    5.     {
    6.         $login = $_POST['login'] ?? null;
    7.         $password = $_POST['password'] ?? null;
    8.  
    9.         if (!$login || !$password) {
    10.             $this->returnHTML('Views/Account/LogOnForm.html', [
    11.                 'errors'    => 'Логин и/или пароль не длжны быть пустыми!',
    12.             ]);
    13.         }
    14.  
    15.         //Code...
    16.  
    17.     }
    18.  
    19. }
    20.  
    21. class BaseController
    22. {
    23.  
    24.     protected function returnHTML($tmpl, $vars)
    25.     {
    26.         if (is_array($vars)) {
    27.             extract($vars);
    28.         }
    29.         require_once $tmpl;
    30.     }
    31.  
    32. }
    Модель: Впринципе идеологически вы верно написали, получился файл, содержащий определенные функции для работы над сущностью (комментарии), но опять же, модель должна быть классом, являющимся представлением сущности в коде. И подумайте над названием методов, вот это: transformCommentsToArray режет глаз и не отображает смысла функции. Если вы хотите получить список комментариев так и напишите getComments.

    Я кончил.
     
  24. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    @alexpride1993, какая буква в аббревиатуре MVC обозначает класс? MVC может быть без классов (без относительно к коду ТС).
     
    Fell-x27 нравится это.
  25. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я больше скажу, MVC может быть даже без разделения на файлы. Даже без разделения на функции, прстигспди.

    MVC это не конкретная архитектура. Это абстрактная парадигма, которая не про код и не про наличие HTML в index.php, она про логическое разделение частей приложения, отвечающих за разные аспекты его работы на высоком уровне. Разделение это может быть даже тупо на уровне отбивки строк пустых в простынном файлике.