Вообще начнём с самой магии)
PHP:
Код:
public
$project_id
=
25
;
public
$session_id
=
false
;
public
$sid
=
251
;
и теперь самое прикольное
PHP:
Код:
public
function
__construct
(
$session_id
=
false
,
$sid
=
false
,
$pid
=
false
)
{
if
(
$session_id
!==
false
)
$this
-
>
session_id
=
$session_id
;
if
(
$sid
!==
false
)
$this
-
>
sid
=
$sid
;
if
(
$pid
!==
false
)
$this
-
>
project_id
=
$pid
;
}
Оригинальное решение) Каким это магическим образом у нас типы данных вида integer, ведут в boolean? Я конечно понимаю, что пэхапе не сильно типизированный язык. Но это бред и ещё так сравнивать, когда тождественно не равно.
Далее самое интересное, а автор знает про правило, что большое количество аргументов является плохим тоном в любом языке?
Но мы идём дальше и смотрим на методы. Разве трудно ловить реквесты, и фильтровать что в них мы получили? И всё. А теперь самое интересное весь этот набор функций можно просто выкинуть. Это тупо копипаст кода и нарушение принципа DRY. За этот принцип в серьезных компаниях просто не принимают и с тобой попрощаются.
Я не буду копипастить весь код, но приведу простой пример на этом коде:
PHP:
Код:
public
function
subscription
(
$email
)
{
$this
-
>
act
=
'subscription'
;
$this
-
>
method
=
'Linage2AccountsAuth'
;
$this
-
>
data
=
array
(
'subscription-email'
=
>
$email
,
)
;
return
$this
;
}
public
function
register
(
$prefix
,
$login
,
$email
,
$password
,
$password_verify
,
$referal
=
''
,
$utm_source
=
'APPLICATION'
,
$id_promo
=
0
,
$promo_bonus
=
array
(
)
)
{
$this
-
>
act
=
'register'
;
$this
-
>
method
=
'Linage2AccountsAuth'
;
$this
-
>
data
=
array
(
'register-account'
=
>
$prefix
.
$login
,
'register-email'
=
>
$email
,
'register-password'
=
>
$password
,
'register-password-verify'
=
>
$password_verify
,
'register-referal'
=
>
$referal
,
'utm_source'
=
>
$utm_source
,
'promo'
=
>
$id_promo
,
'promo_bonus'
=
>
$promo_bonus
,
)
;
return
$this
;
}
public
function
create_game_account
(
$prefix
,
$login
,
$password
,
$password_verify
,
$utm_source
=
'APPLICATION'
)
{
$this
-
>
act
=
'create_game_account'
;
$this
-
>
method
=
'Linage2AccountsAuth'
;
$this
-
>
data
=
array
(
'register-account'
=
>
$prefix
.
$login
,
'register-password'
=
>
$password
,
'register-password-verify'
=
>
$password_verify
,
'utm_source'
=
>
$utm_source
,
)
;
return
$this
;
}
всегда, у нас идёт одно и тоже и что за магическая переменная act? Почему не назвать для всех подробно и нормально action? Но ладно, я приведу простой пример как это можно всё уменьшить
PHP:
Код:
/**
* @param $action
* @param $method
* @param array $data
* @return $this
*/
public
function
sendAction
(
$action
,
$method
,
$data
=
[
]
)
{
$this
-
>
act
=
$action
;
$this
-
>
method
=
$method
;
$this
-
>
data
=
$data
;
return
$this
;
}
Всё то же самое, но всё решилось 5 строчками кода лишь передавая необходимые данные и их разбирая. У нас идёт каждый раз один и тот же код, только меняется action и method. Какой смысл и практичное применение? Не какого. Какой тут, мы передали необходимые данные и массив и всё готово без кучи магических переменных, без кучи лишнего и подобия вида:
Код:
$utm_source = 'APPLICATION', $id_promo = 0, $promo_bonus = array()
Что за такой источник? Зачем передавать? Ладно бы ещё как то реквесты брало или ещё как то. Или просто по нормальному приведено, но какой от этого смысл?
Сообщение от
Desquire
Эх... зачем использовать отличные либы, когда можносделать костыли самому?
Зачем юзать Guzzle ... Есть же curl_init();
ну тут не обязательно и использовать Guzzle, он по сути подойдет для проекта где используется с не 1 апи и не только. Но можно и curl, для быстрых и простых задач подойдёт. А так да стоит в серьезном приложение использовать его и без него никуда. На дворе почти зарелизенный php 7.4, начиная с 5.4 появились нормальные массивы вида [], любой современный фреймворк работает уже на минимум 7.2 так 7.1 в декабре закончится поддержка, а мы досих пор используем фразу array().
Код:
public $gzc = false;//сжатие
А трудно назвать gzip? где в слове gzip есть gzc? в чём проблема назвать?
Да тут много чего и что необходимо рефакторить и переписывать.
Никакого согласования в именнование переменных нет. А это опять таки нарушение PSR стандартов. Тут недавно была тема очень интересная от
@Solution.
https://mmo-dev.info/threads/Нужен-совет-бывалых-php.11363/И там были весьма полезные сообщения с полезными ссылками, продублирую их просто тут:
PHP Standards Recommendations - PHP-FIG
We're a group of established PHP projects whose goal is to talk about commonalities between our projects and find ways we can work better together.
www.php-fig.org
А вот и наши любимые стандарты для PHP