<MyRusakov.ru />

Создание сайтов на Django

Создание сайтов на Django

Данный курс научит Вас создавать сайты на очень мощном фреймворке – Django. Курс состоит из 9 разделов, в которых Вы с нуля освоите данный фреймворк на примере создания полноценного Интернет-магазина.

В рамках многочисленных упражнений Вы так же создадите свой собственный сайт, что даст Вам ту необходимую практику для закрепления материала, а также полноценную серьёзную работу для своего портфолио.

Помимо самого курса Вас ждёт ещё и бесплатный ценный Бонус: «Unit-тестирование сайта на Django». В этом Бонусе Вы узнаете, как можно написать автоматические тесты для проекта на Django. Это позволит находить оперативно ошибки, а также даст возможность в будущем добавлять новый функционал, не боясь что-то сломать в старом.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Форум сайта MyRusakov.ru

Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0
19.06.2019 19:58:07 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #1
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

3_07_01

<?php

class Point
{
private $x;
private $y;
private static $counter = 0;

public function __construct($x = false, $y = false)
{
if ($x) {
$this->x = $x;
}

if ($y) {
$this->y = $y;
}

self::$counter++;
}


public function getX()
{
return $this->x;
}

public function getY()
{
return $this->y;
}

public function setX($x)
{
$this->x = $x;
}

public function setY($y)
{
$this->y = $y;
}

public static function getCounter()
{
return self::$counter;
}

public function __toString()
{
if ($this->x && $this->y) {
$str = "Точка с координатами ($this->x, $this->y)";
return $str;
}
return 'Координаты не заданы';
}
}

$obj_1 = new Point();
$obj_2 = new Point(5,3);
$obj_3 = new Point(4,54);

echo $obj_1 . '<br>', $obj_2 . '<br>', $obj_3 . '<br>';
Профиль Ответить
19.06.2019 20:05:21 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #2
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

3_07_02

class Point
{
private $x;
private $y;
...

public function __get($name)
{
if ($name == 'z' ) {
echo 'Класс Point работает только в двумерном пространстве';
} else {
echo 'Свойства: ' . $name . ' не существует';
}
}

}

$obj_1 = new Point();
$obj_1->z;
Профиль Ответить
19.06.2019 20:15:25 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #3
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

3_07_03

class Point
{
    private $x;
    private $y;
...

   public function __set($name, $value)
   {
       if ($name == 'z' ) {
           echo 'Класс Point работает только в двумерном пространстве';
       } else {
           echo "Вы пытались изменить значение несуществующего свойства $name на $value";
       }
   }

}

$obj_1 = new Point();
$obj_1->z = 10;
Профиль Ответить
20.06.2019 12:14:29 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #4
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

3_07_04

class Point  
{  
    private $x;  
    private $y;  
...  

   public function __call($method, $params)
   {
echo 'Класс Point работает только в двумерном пространстве <br>';
echo 'Введенные параметры: ' . print_r($params, true);
    }
}  

$obj_1 = new Point();  
$obj_1->getZ('asddsa', 123);
Профиль Ответить
20.06.2019 12:22:32 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #5
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

3_07_05

class Point
{
// ...
}

$obj = new Point(7, 7);
$cloneObj = clone $obj;

echo 'x у $obj = ' . $obj->getX(). '<br>';
echo 'x у $cloneObj = ' . $cloneObj->getX(). '<br>';

$obj->setX(11);

echo 'x у $obj = ' . $obj->getX(). '<br>';
echo 'x у $cloneObj = ' . $cloneObj->getX(). '<br>';

$cloneObj->setX(5);

echo 'x у $obj = ' . $obj->getX(). '<br>';
echo 'x у $cloneObj = ' . $cloneObj->getX(). '<br>';

Результат:

x у $obj = 7
x у $cloneObj = 7
x у $obj = 11
x у $cloneObj = 7
x у $obj = 11
x у $cloneObj = 5
Профиль Ответить
21.06.2019 01:17:18 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #6
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

3_08

index.php :
<?php

// Подключаем класс и функции
require 'Point.php';
require 'functions.php';


// Задаем значения переменных по умолчанию
$x = '';
$y = '';
$errors = null;
$success = null;


if ($_POST) {

// Задаем имя файла
$file = 'obj';

// Если нажата кнопка "Сохранить"
if (isset($_POST['save'])) {
// получаем ошибки
$errors = getXYErrors($_POST['x'], $_POST['y']);

// задаем значение поля X, если непустое
if ($_POST['x']) {
$x = $_POST['x'];
}

// задаем значение поля Y, если непустое
if ($_POST['y']) {
$y = $_POST['y'];
}

// если нет ошибок, то
if (!isset($errors)) {
// создаем объект класса Point с
// полученными переменными
$point = new Point($x, $y);

// сериализуем его
$str = serialize($point);

// сохраняем в файл
file_put_contents($file, $str);

// записываем оповещение
$success = 'Успешно сохранено';

// "опустошаем" X и Y
$x = '';
$y = '';
}


}

// Если нажата кнопка "Загрузить"
if (isset($_POST['load'])) {
// если существует файл
if (is_file($file)) {
// записываем содержимое файла в переменную
$str = file_get_contents($file);

// "рассериализовываем"
$p = unserialize($str);

// получаем значения координат для подстановки
// в поля
$x = $p->getX();
$y = $p->getY();

// записываем оповещение
$success = 'Успешно загружено';
} else {
// если файл не существует, выводим ошибку
$errors[] = 'Файл не существует';
}
}
}
?>

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<?php if (isset($errors)):?>
<?php foreach ($errors as $error): ?>
<p style="color: red"><?= $error ?></p>
<?php endforeach ?>
<?php endif ?>
<?php if (isset($success)):?>
<p style="color: green"><?= $success ?></p>
<?php endif ?>
<form action="" method="post">
<div>
X: <input type="text" name="x" value="<?= $x ?>">
</div>
<div>
Y: <input type="text" name="y" value="<?= $y ?>">
</div>
<div>
<input type="submit" name="save" value="Сохранить">
<input type="submit" name="load" value="Загрузить">
</div>
</form>
</body>
</html>

Point.php
:
<?php

class Point
{
private $x;
private $y;
private static $counter = 0;

public function __construct($x = false, $y = false)
{
if ($x) {
$this->x = $x;
}

if ($y) {
$this->y = $y;
}

self::$counter++;
}


public function getX()
{
return $this->x;
}

public function getY()
{
return $this->y;
}

public function setX($x)
{
$this->x = $x;
}

public function setY($y)
{
$this->y = $y;
}

public static function getCounter()
{
return self::$counter;
}

public function __toString()
{
if ($this->x && $this->y) {
$str = "Точка с координатами ($this->x, $this->y)";
return $str;
}
return 'Координаты не заданы';
}

public function __get($name)
{
if ($name == 'z' ) {
echo 'Класс Point работает только в двумерном пространстве';
} else {
echo 'Свойства: ' . $name . ' не существует';
}
}

public function __set($name, $value)
{
if ($name == 'z' ) {
echo 'Класс Point работает только в двумерном пространстве';
} else {
echo "Вы пытались изменить значение несуществующего свойства $name на $value";
}
}

public function __call($method, $params)
{
echo 'Класс Point работает только в двумерном пространстве <br>';
echo 'Введенные параметры: ' . print_r($params, true);
}
}

functions.php :
<?php

function getXYErrors($x, $y)
{
$errors = [];

if (!empty($x)) {
if (!is_numeric($x)) {
$errors[] = 'X должен быть числом';
}
} else {
$errors[] = 'Введите координату X';
}

if (!empty($y)) {
if (!is_numeric($y)) {
$errors[] = 'Y должен быть числом';
}
} else {
$errors[] = 'Введите координату Y';
}

if (empty($errors)) {
$errors = null;
}

return $errors;
}
Профиль Ответить
24.06.2019 22:31:32 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #7
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

03_09

<?php

abstract class Shape
{
public abstract function draw();
}

class Point extends Shape
{
public $x;
public $y;

public function __construct($x = false, $y = false)
{
$this->x = $x;
$this->y = $y;
}

public function draw()
{
echo "Рисуем точку с координатами ($this->x, $this->y)";
}
}

$point = new Point(1, 2);
$point->draw();
Профиль Ответить
24.06.2019 22:45:12 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #8
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

03_10

<?php
interface CanMove
{
public function move();
}

interface CanFly
{
public function fly();
}

class Car implements CanMove
{
public function move()
{
echo 'Движение автомобиля <br>';
}
}

class Aircraft implements CanFly
{
public function fly()
{
echo 'Полёт самолёта <br>';
}
}

$car = new Car();
$car->move();

$aircraft = new Aircraft();
$aircraft->fly();
Профиль Ответить
24.06.2019 22:58:40 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #9
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

03_11

<?php

trait CanMove
{
public function move()
{
echo 'Движение автомобиля <br>';
}
}

trait CanFly
{
public function fly()
{
echo 'Полёт самолёта <br>';
}
}

class Car
{
use CanMove;
}

class Aircraft
{
use CanFly;
}

$car = new Car();
$car->move();

$aircraft = new Aircraft();
$aircraft->fly();
Профиль Ответить
24.06.2019 23:41:10 Обсуждение по решению задач курса PHP и MySQL с Нуля до Гуру 2.0 Сообщение #10
John Doe

John Doe

Продвинутый

Продвинутый

Дата регистрации:
14.01.2019 19:23:31

Сообщений: 42

03_12

CanMove.php
<?php


namespace JD\Traits;

trait CanMove
{
public function move()
{
echo 'Движение автомобиля <br>';
}
}

CanFly.php
<?php

namespace JD\Traits;


trait CanFly
{
public function fly()
{
echo 'Полёт самолёта <br>';
}
}

Car.php
<?php

namespace JD\Classes;

use JD\Traits\CanMove;

require_once 'CanMove.php';

class Car
{
use CanMove;
}
Профиль Ответить