ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   отключение элементов (php) (https://forum.antichat.xyz/showthread.php?t=783910)

root@localhost:~# 27.06.2022 11:38

недавно начал учить php

есть функция которая парсит из базы итемы, я сделал условия которые будут отключать некоторые символы в случае если допустим итем 1 - у него отключается вывод количества, или если итем не точенный у него не выводится заточка

пример

так вот, хотелось бы узнать насколько это костыльно у меня это реализовано, можно ли так пускать на лайв, и как лучше в целом это сделать?

кусок кода:

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$before
=
'('
;
$after
=
')'
;
$plus
=
' +'
;
if
(
$row
-
>
enchant
==
0
)
{
unset
(
$row
-
>
enchant
)
;
unset
(
$plus
)
;
}
if
(
$row
-
>
amount
==
1
)
{
unset
(
$row
-
>
amount
)
;
unset
(
$before
)
;
unset
(
$after
)
;
}
echo
'
item_name
.
' '
.
$before
.
$row
-
>
amount
.
$after
.
$plus
.
$row
-
>
enchant
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}


Mex-Vision 27.06.2022 12:17

Цитата:

Сообщение от root@localhost:~#

недавно начал учить php
есть функция которая парсит из базы итемы, я сделал условия которые будут отключать некоторые символы в случае если допустим итем 1 - у него отключается вывод количества, или если итем не точенный у него не выводится заточка
пример

так вот, хотелось бы узнать насколько это костыльно у меня это реализовано, можно ли так пускать на лайв, и как лучше в целом это сделать?
кусок кода:

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$before
=
'('
;
$after
=
')'
;
$plus
=
' +'
;
if
(
$row
-
>
enchant
==
0
)
{
unset
(
$row
-
>
enchant
)
;
unset
(
$plus
)
;
}
if
(
$row
-
>
amount
==
1
)
{
unset
(
$row
-
>
amount
)
;
unset
(
$before
)
;
unset
(
$after
)
;
}
echo
'
item_name
.
' '
.
$before
.
$row
-
>
amount
.
$after
.
$plus
.
$row
-
>
enchant
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}


Я бы конечно сделал вот так.

Кода меньше и код гораздо читаемый, как мне кажется.

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$enchantStr
=
''
;
$amountStr
=
''
;
if
(
$row
-
>
enchant
>
0
)
$enchantStr
=
' +'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$amountStr
=
' ('
.
$row
-
>
amount
.
')'
;
echo
'
item_name
.
$amountStr
.
$enchantStr
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}

Да и как мне кажется, код более оптимизирован. Меньше временных переменных, меньше канкатинаций.

root@localhost:~# 27.06.2022 12:19

Цитата:

Сообщение от Mex-Vision

Я бы конечно сделал вот так.
Кода меньше и код гораздо читаемый, как мне кажется.

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$enchantStr
=
''
;
$amountStr
=
''
;
if
(
$row
-
>
enchant
>
0
)
$enchantStr
=
' +'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$amountStr
=
' ('
.
$row
-
>
amount
.
')'
;
echo
'
item_name
.
$amountStr
.
$enchantStr
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}

Да и как мне кажется, код более оптимизирован. Меньше временных переменных, меньше канкатинаций.

хм, тоже неплохо, не додумался почему то

Mex-Vision 27.06.2022 12:22

Цитата:

Сообщение от root@localhost:~#

хм, тоже неплохо, не додумался почему то

Я просто уже не помню до конца, но если включить варнинги в php, скорее всего будет ругаться на обращение к перменной которая не установлена. А вы как раз обращаетесь к переменным которые удалили функцией unset

Попробуйте включить ошибки:

ini_set('display_errors', 1);

error_reporting(E_ALL);

и отработать свой код, будут ли варнинги.

òbiòbi верифицированный пользователь. 27.06.2022 12:29

или так

PHP:


Код:

$items
=
$result
-
>
fetchAll
(
PDO
:
:
FETCH_OBJ
)
;
foreach
(
$items
as
$item
)
{
$title
=
$item
-
>
item_name
;
if
(
$item
-
>
enchant
>
0
)
$title
.
=
' +'
.
$item
-
>
enchant
;
if
(
$item
-
>
amount
>
0
)
$title
.
=
' ('
.
$item
-
>
amount
.
')'
;
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}


root@localhost:~# 27.06.2022 12:34

Цитата:

Сообщение от òbi

или так

PHP:


Код:

$items
=
$result
-
>
fetchAll
(
PDO
:
:
FETCH_OBJ
)
;
foreach
(
$items
as
$item
)
{
$title
=
$item
-
>
item_name
;
if
(
$item
-
>
enchant
>
0
)
$title
.
=
' +'
.
$item
-
>
enchant
;
if
(
$item
-
>
amount
>
0
)
$title
.
=
' ('
.
$item
-
>
amount
.
')'
;
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}


а почему не while? просто из интереса спрашиваю

òbiòbi верифицированный пользователь. 27.06.2022 12:37

Цитата:

Сообщение от root@localhost:~#

а почему не while? просто из интереса спрашиваю

в данном случае не будет иметь значения, как больше нравится

Desquire 27.06.2022 12:40

Сильно костьільно из-за чистого пхп).

У тебя есть операторьі ?? ?:

зачем тебе делать ансет перед вьіводом?

Можно сделать несколько вариантов. ( один менее костьільний, второй)

Єто переделаньій вариант @Mex-Vision, тоже самое, только для пхп 8 и в 1 строку)

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
echo
'
item_name
.
(
$row
-
>
enchant
>
0
?
' +'
.
$row
-
>
enchant
:
''
)
.
(
$row
-
>
amount
>
0
?
' ('
.
$row
-
>
amount
.
')'
:
''
)
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}

Может нужно будет добавлять какие-то еще лебльі или т.п.

То можно сделать вот так

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$data_titles
=
[
]
;
$data_titles
[
]
=
$row
-
>
item_name
;
if
(
$row
-
>
enchant
>
0
)
$data_titles
[
]
=
'+'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$data_titles
[
]
=
'('
.
$row
-
>
amount
.
')'
;
// Можно добавить еще что-то в $data_titles.
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}


root@localhost:~# 27.06.2022 12:41

Цитата:

Сообщение от Desquire

Сильно костбьіли.

У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?

Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант @Mex-Vision, тоже самое, только для пхп 8 и в 1 строку)

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
echo
'
item_name
.
(
$row
-
>
enchant
>
0
?
' +'
.
$row
-
>
enchant
:
''
)
.
(
$row
-
>
amount
>
0
?
' ('
.
$row
-
>
amount
.
')'
:
''
)
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}

Может нужно будет добавлять какие-то еще лебльі или т.п.
То можно сделать вот так

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$data_titles
=
[
]
;
$data_titles
[
]
=
$row
-
>
item_name
;
if
(
$row
-
>
enchant
>
0
)
$data_titles
[
]
=
'+'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$data_titles
[
]
=
'('
.
$row
-
>
amount
.
')'
;
// Можно добавить еще что-то в $data_titles.
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}


я еще не пришел к тому, что бы делать по уму, я еще даже не весь базовый синтаксис выучил) поэтому и спросил как лучше

Desquire 27.06.2022 12:42

Цитата:

Сообщение от root@localhost:~#

я еще не пришел к тому, что бы делать по уму, я еще даже не весь базовый синтаксис выучил) поэтому и спросил как лучше

У тебя сразу идет вьівод.

Собери все в 1 и вьіведи в нужном месте еще)

GhgostCobalt 27.06.2022 15:05

Цитата:

Сообщение от Desquire

Сильно костьільно из-за чистого пхп).

У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?

Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант @Mex-Vision, тоже самое, только для пхп 8 и в 1 строку)

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
echo
'
item_name
.
(
$row
-
>
enchant
>
0
?
' +'
.
$row
-
>
enchant
:
''
)
.
(
$row
-
>
amount
>
0
?
' ('
.
$row
-
>
amount
.
')'
:
''
)
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}

Может нужно будет добавлять какие-то еще лебльі или т.п.
То можно сделать вот так

PHP:


Код:

while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$data_titles
=
[
]
;
$data_titles
[
]
=
$row
-
>
item_name
;
if
(
$row
-
>
enchant
>
0
)
$data_titles
[
]
=
'+'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$data_titles
[
]
=
'('
.
$row
-
>
amount
.
')'
;
// Можно добавить еще что-то в $data_titles.
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}


Вы принципиально отключили русский язык на телефоне?)

Desquire 27.06.2022 16:48

Цитата:

Сообщение от GhgostCobalt

Вы принципиально отключили русский язык на телефоне?)

Да, єтот портал единстенное место, где я общаюсь на єтом язьіке.

Можно каждый раз копировать букву от куда-то, но мне лень.

m1ckey 27.06.2022 18:26

Посмотрите в сторону MVC , на таком подходе далеко не уедешь

root@localhost:~# 27.06.2022 20:30

Цитата:

Сообщение от m1ckey

Посмотрите в сторону MVC , на таком подходе далеко не уедешь

пожалуй когда хотя бы месяца 3 опыта будет

Mex-Vision 27.06.2022 20:44

Цитата:

Сообщение от root@localhost:~#

пожалуй когда хотя бы месяца 3 опыта будет

Если синтаксис знаешь, то лучше не терять время, и сразу почитать про паттерны проектирования. MVC это некая база для небольшой веб разработки на PHP, которая не должна вызвать сложностей, так как очень проста в понимании.

root@localhost:~# 27.06.2022 20:47

Цитата:

Сообщение от Mex-Vision

Если синтаксис знаешь, то лучше не терять время, и сразу почитать про паттерны проектирования. MVC это некая база для небольшой веб разработки на PHP, которая не должна вызвать сложностей, так как очень проста в понимании.

с синтаксисом пока проблемы, я начал пилить некое подобие статистики сервера для себя, пилил на mysqli, потом решил перекинуться на pdo, потом понял что лучше делать функциями

по сути я еще даже циклы толком не освоил, из того что я уже понял это работа с массивами, условия, работа с БД, сессии, функции и прочая мелочь

m1ckey 27.06.2022 21:06

См. технический долг

Mex-Vision 27.06.2022 22:17

Цитата:

Сообщение от root@localhost:~#

с синтаксисом пока проблемы, я начал пилить некое подобие статистики сервера для себя, пилил на mysqli, потом решил перекинуться на pdo, потом понял что лучше делать функциями
по сути я еще даже циклы толком не освоил, из того что я уже понял это работа с массивами, условия, работа с БД, сессии, функции и прочая мелочь

Тогда лучше всё такие основы выучить, и долго не задерживаться на функциональном программировании, изучайте ООП. Наступит переломный момент, когда вам покажется что перед вами открылся целый мир=) Потом конечно вы сломаете ноги и руки изучая паттерны, и запутаетесь еще сильнее чем вначале пути, но это уже совсем другая история.

root@localhost:~# 27.06.2022 22:43

Цитата:

Сообщение от Mex-Vision

Тогда лучше всё такие основы выучить, и долго не задерживаться на функциональном программировании, изучайте ООП. Наступит переломный момент, когда вам покажется что перед вами открылся целый мир=) Потом конечно вы сломаете ноги и руки изучая паттерны, и запутаетесь еще сильнее чем вначале пути, но это уже совсем другая история.

пока еще не познал смысл ооп, работая с pdo примерно понимаю как это должно работать, но применения у себя еще не нашел, возможно когда процедурный стиль освою пойду ооп учить, а пока буду обучаться)


Время: 19:43