Dalam hal pembuatan aplikasi atau aplikasi yang sudah jadi, tidak menutup kemungkinan tedapat banyak bug atau kesalahan pada aplikasi.
Berikut beberapa informasi untuk Membaca & Mengatasi Error Pada Aplikasi PHP
Bahkan tidak bisa dipungkiri kalau dalam proses pembuatan aplikasi menggunakan programming language manapun akan terdapat error / bug.
Akan tetapi masih banyak yang belum paham tentang bagaimana cara melihat atau membaca bahkan mengatasi error tersebut, padahal sudah tertulis jelas dengan bahasa yang mudah di mengerti.
Kali ini saya akan membahas tentang cara membaca error yang umum terjadi pada aplikasi yang menggunakan Bahasa Pemrograman PHP.
Berikut pembahasan sederhana yang sering di jumpai.
Pembahasan
Pada error akan di dapatkan notifikasi / tulisan berupa :
ErrorType: Error Description is Here /Path/To/File.php on line IntegerLine
contoh:
Notice: Array to string conversion in /Path/To/ArrayToStringConversion.php on line 4
Error / Kesalahan diatas utamanya harus kita ketahui dimana line tersebut berasal dan berada pada berkas / file mana.
Pada contoh diatas adalah berada pada file /Path/To/ArrayToStringConversion.php
dan berada pada line 4
Tipe: Error Notice
Error Notice adalah salah satu akibat terjadinya kesalahan kode yang tidak tervalidasi dengan benar. Dalam hal ini notice error adalah salah satu kesalahan ringan yang umum terjadi dalam pengaplikasian kode. Error seperti ini tidak berdampak besar pada penerapan aplikasi, akan tetapi dapat berpengaruh pada hasil akhir / nilai pada aplikasi.
Dan error warning ini tidak berdampak pada eksekusi kode selanjutnya.
I. Notice: DataType to AnotherDataType conversion
Seperti halnya “Array to string conversion”, untuk data type bisa dilihat di https://www.w3schools.com/php/php_datatypes.asp
Kesalahan tersebut adalah di karenakan variable atau konversi yang tidak diperkenankan secara tidak sengaja dari data type satu ke data type lainnya.
Contoh:
1 2 3 4 5 |
<?php // variable array $array = ['ini array']; // Kesalahan mengkonversi atau menggabungkan data type array dengan string $error = $array.'ini string data type'; |
II. Notice: Undefined index: key_undefined_index
Kesalahan umum tersebut terjadi pada pengambilan array berdasarkan key name string / non integer key, karena offset dari key name / nilai yang di ambil tidak ada pada value / array.
Contoh:
1 2 3 4 5 6 7 8 |
<?php // variable array $sampleArray = [ 'key_1' => 1, 'key_2' => 2, ]; // mengakses key yang tidak ada di array $sampleArray['key_undefined_index']; |
III. Notice: Undefined offset: integer
Kesalahan umum tersebut terjadi pada pengambilan array berdasarkan integer / number key, karena offset dari key yang di ambil tidak ada pada value / array.
Contoh:
1 2 3 4 5 6 |
<?php // variable array dengan 2 nilai hanya ada offset, karena array start offset adalah 0 // jadi yang ada hanya ada 0 & 1 $sampleArray = [ 0, 1 ]; // mengakses key yang tidak ada di array $sampleArray['3']; |
IV. Notice: Undefined variable: Namavariable
Kesalahan umum yang terjadi saat mencoba mengakses variable yang tidak di deklarasi sebelumnya.
Contoh:
1 2 3 4 5 |
<?php // mencoba mengakses $unknownVariable yang belum di deklarasi sebelumnya $setNewVariable = $unknownVariable; // atau contoh lain echo $unknownVariable |
V. Notice: Constant ContstantName already defined
Kesalahan ini terjadi karena constant telah di define sebelumnya, dan di redeclare / re-define ulang dengan nama constant yang sama.
Contoh:
1 2 3 4 |
<?php define('MY_CONSTANT', 'value'); // redifine constant define('MY_CONSTANT', 'redefine value'); |
VI. Notice: Trying to get property 'propertyToAccess' of non-object
Kesalahan seperti ini ada;ah mencoba mendapatkan property object, akan tetapi property object belum terdapat di dalam object.
Contoh:
1 2 3 4 5 6 7 8 9 10 |
<?php class MyClass { public $propertyExists = 'string'; } $object = new MyClass(); // ini akan memberikan error notice $var = $object->unexistencesProperty; |
Tipe: Error Warning
Error Notice adalah salah satu akibat terjadinya kesalahan kode atau bahkan konfigurasi dari binary php yang tidak tervalidasi dengan benar atau bahkan kesalahan terjadi pada aplikasi dengan pengkodean yang salah. Dalam hal ini warning error adalah salah satu kesalahan ringan atau mungkin berat yang umum terjadi dalam pengaplikasian kode atau konfigurasi server. Error seperti ini bisa saja berdampak besar pada penerapan aplikasi, dan juga dapat berpengaruh pada hasil akhir / nilai pada aplikasi.
Dan error warning ini tidak berdampak pada eksekusi kode selanjutnya.
I. Warning: A non-numeric value encountered
Kesalahan non numeric ini biasanya terjadi karena pengkalkulasian (misal: penjumlahan, perkalian dll) karena salah satu atau semua nilai bukan merupakan numerikal.
Contoh:
1 2 3 4 5 6 7 |
<?php $variableString = 'string'; $variableNumeric = '1'; // mencoba mengkalkulasi numerical dengan string $calculation = $variableString + $variableNumeric; // mencoba mengkalkulasi non numerical dengan non numerical (string) $calculation2 = $variableString * $variableString; |
II. Warning: functionName() expects parameter x to be dataType, anotherDataType given
Error seperti ini adalah kesalahan untuk memberikan argument / parameter pada sebuah fungsi.
Misal pada fungsi date()
yang dibutuhkan pada argument 1 adalah string, tapi yang di berikan adalah array, maka akan keluar error seperti.
Warning: date() expects parameter 1 to be string, array given in /Path/To/File.php in LineCode
Contoh:
1 2 3 |
<?php $thisIsArray = []; $date = date($thisIsArray); |
III. Warning: Use of undefined constant CONSTANT_NAME
Error seperti ini dikarenakan mencoba menggunakan Constant yang belum terdefine / terdeklarai sebelumnya.
Contoh:
1 2 3 |
<?php // use undefined constant $myVariable = MY_UNDEFINED_CONSTANT; |
IV. Warning: range(): The supplied range exceeds the maximum array size
Error ini dikarenakan kesalahan argument pada fungsi range, karena range maximum terlalu besar
Contoh:
1 2 3 4 5 6 7 |
<?php foreach (range(1, 1000000000000) as $item) { // will be not executed } // ini akan di tampilkan echo 'executed'; |
V. Warning: Invalid argument supplied for foreach()
Proccess looping yang menjadi subject bukan merupakan nilai yang iterable contoh iterable adalah Array.
Contoh:
1 2 3 4 5 6 7 |
<?php $variable = 'this is string and not iterable'; foreach ($variable as $item) { // stop execute this line go next } // ini akan ditampilkan echo "executed"; |
Tipe: Error FATAL ERROR/PARSE ERROR/RECOVERABLE
Tipe error seperti ini akan menghentikan aplikasi tepat pada kode yang terdapat error. Dan kode selanjutnya tidak akan ter-eksekusi.
I. Fatal error: Uncaught Error: Class 'ClassName' not found
Error Class not found ini dikarenakan class tidak ada dalam kode saat eksekusi di lakukan.
Contoh:
1 2 3 4 5 6 |
<?php class ExistsClass { } $var = new NonExistsClass(); |
II. Catchable fatal error: Object of class 'ClassName' could not be converted to dataType
Error ini terjadi karena mengubah object ke data type lain (tidak mempunyai magic method seperti __tostring() yang dapat mengkonversi object menjadi string sesuai dengan return value method)
Contoh:
1 2 3 4 5 6 7 |
<?php class MyClass { } // casting object ke string $class = (string) (new MyClass()); |
III. Error: Call to undefined function functionName()
Error yang terjadi karena terjadi pemanggilan function, dimana function tersebut belum dibuat / tidak ada.
Contoh:
1 2 3 |
<?php // memanggil function yang belum ada $myvar = callTheUndefinedFunctionTestForError(); |
IV. Error: Call to undefined method ClassName::undefinedMethodCalled()
Error terjadi apabila ada pemanggilan ke method (Function Class) di mana method tersebut belum di declare.
Contoh:
1 2 3 4 5 6 7 8 |
<?php class ClassName { } $className = new ClasName(); $className->undefinedMethodCalled(); |
V. Fatal error: Cannot declare class ClassName, because the name is already in use
Error terjadi karena ada class yang di declare ulang. Karena Class Name (case insensitive pada php) dan telah ada sebelumnya lalu di declare ulang.
Contoh:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php class ClassName { } // other class redeclare class ClassName { } |
Tulisan di atas adalah beberapa contoh error yang seting terjadi pada pengaplikasin kode.
Karena kalau ditulis di artikel akan menjadi pembahasan yang panjang, apabila ada pertanyaan langsung saja komen atau kontak kami.
Jangan lupa kunjungi channel youtube onphpid di sini:
https://www.youtube.com/c/onphpidtutorial
jangan lupa subscribe.
(note: akhirnya aku punya waktu buat nulis ginian)