jeżeli ktoś używa tablicy w PHP zwróć uwagę na odczyt danych po konkretnym kluczu
<?php
$a = [];
echo $a['zlyKlucz']; // błąd
powinno być
<?php
// PHP >= 7.0
echo $a['zlyKlucz'] ?? 'domyślna wartość';
// PHP < 7.0
$username = isset($a['zlyKlucz']) ? $a['zlyKlucz'] : 'domyślna wartość';
warunek LIKE
vs =
W przypadku wyszukiwania watości w kolumnach typu CHAR lub VARCHAR i użycia operatora =
istnieje niewielka poprawa wydajnościowa (odczuwalna tylko wtedy jak ktoś skopie całe zapytanie i napisze je mega nie optymalnie).
Jednak główna różnica między tymi operatorami jest taka, że LIKE
sprawdza wartości znak po znaku i nie ignoruje białych znaków na końcu wartości np:
CREATE TABLE `test` (`string` VARCHAR(10));
INSERT INTO `test` VALUE ('test');
INSERT INTO `test` VALUE ('test ');
INSERT INTO `test` VALUE ('test ');
INSERT INTO `test` VALUE ('test ');
INSERT INTO `test` VALUE ('nietest');
SELECT COUNT(*) FROM `test` WHERE `string` LIKE 'test';
# output: 1
SELECT COUNT(*) FROM `test` WHERE `string` = 'test';
# output: 4
korzystanie z WHERE Column IN (....)
Tablea:
ID | Code |
---|---|
1 | dealer |
2 | komis |
3 | inny |
WHERE Code IN ('komis' 'inny', 'dealer')
zwróci:
ID | Code |
---|---|
1 | dealer |
WHERE Code IN ('kom' 'is', 'dealer')
ID | Code |
---|---|
1 | dealer |
2 | komis |
W PRZYPADKU BRAKU PRZECINKA WYSTEPUJE AUTOMATYCZNA KONKATENACJA !
upewnij się czy tworzona baza/tabela/kolumna przyjmuje polskie znaki przykładowa zmiana dla kolumny (mechanizm migracji)
<?php
$this->alterColumn(
'dictionary_agreement',
'TextBody',
$this->text()->append('CHARACTER SET utf8 COLLATE utf8_unicode_ci')
);
jeżeli edytowane są atrybuty rekordu aktywnego lub ktoś edytuje dane z użyciem rekordu aktywnego sprawdź czy atrybuty pokrywają się z polami w tabeli
Nie korzystać z 'magic numbers'.
<?php
$project->statusID = 1;
powinno być coś w stylu:
<?php
$statusNew = Status::find()->where("CODE = 'NEW'");
if ($statusNew instanceof Status) {
$project->StatusID = $statusNew->ID;
} // plus logika co jak ten kod jednak nie istnieje
sprawdzanie typowania przy warunkach if
jeżeli $x='2'
a warunek to $x==2
lepiej zrobić
<?php
2===(int)$x
Po pierwsze sami rzutujemy $x
na int po drugie warunek uwzlgędnia teraz typ po trzecie z $x==2
ktoś może przez przypadek zrobić $x=3
php z if na to pozwolą a w razie czego 3=$x
dało by błąd
Nie korzystać z superglobalnych, zamiast
<?php
$_GET['ID'];
powinno być:
<?php
Yii::$app->getRequest()->get('ID', 'domyślna wartość'); // chodź najlepiej gdyby do klasy aplikacji nie odwoływać się statycznie, ale to nie ten case ;)