Jumat, 13 Januari 2017

Referensi Bahasa PHP (Bagian III)

E. string

Sebuah string adalah rangkaian karakter, di mana karakter adalah sama dengan byte. Ini berarti bahwa PHP hanya mendukung satu set 256 karakter, dan karenanya tidak menawarkan dukungan Unicode asli.
Catatan: Pada PHP 7.0.0, tidak ada pembatasan khusus mengenai panjang string pada 64-bit membangun. Pada 32-bit membangun dan versi sebelumnya, string dapat sebagai besar sebagai hingga 2GB (2147483647 bytes maksimum)
Sintaksis
Sebuah literal string dapat ditentukan dalam empat cara yang berbeda:
tanda kutip tunggal,  tanda kutip ganda, sintaks heredoc, sintaks nowdoc (sejak PHP 5.3.0)

1. Tanda kutip tunggal
Cara paling mudah untuk menentukan string adalah untuk menyertakan dalam tanda kutip tunggal (karakter ').
Untuk menentukan satu kutipan literal, melarikan diri dengan backslash (\). Untuk menentukan garis miring terbalik harfiah, dua kali lipat itu (\\). Semua contoh lain dari backslash akan diperlakukan sebagai backslash harfiah: ini berarti bahwa urutan escape lain yang mungkin digunakan untuk, seperti \ r \ n, akan menjadi output secara harfiah sebagai ditentukan daripada harus setiap arti khusus.
Catatan: Tidak seperti tanda kutip ganda dan sintaks heredoc, variabel dan escape sequence untuk karakter khusus tidak akan diperluas ketika mereka terjadi dalam string bertanda kutip tunggal.
<? Php
echo 'ini string sederhana';
echo 'Anda juga dapat telah tertanam baris baru di
string dengan cara ini karena
apa-apa untuk melakukan ';
// Output: Arnold pernah berkata: "Aku akan kembali"
echo 'Arnold pernah berkata: "Aku \' akan kembali" ";
// Output: Anda dihapus C: \ *. *?
echo 'Anda dihapus C: \\ * *.?';
// Output: Anda dihapus C: \ *. *?
echo 'Anda dihapus C: \ * *.?';
// Output: ini tidak akan memperluas: \ n baris baru
echo 'ini tidak akan memperluas: \ n baris baru';
// Output: Variabel tidak $ memperluas $ baik
echo 'Variabel tidak $ memperluas $ baik';
?>

2. Tanda kutip ganda
Jika string tertutup dalam tanda kutip ganda ( "), PHP akan menafsirkan urutan escape berikut untuk karakter khusus:
karakter escape
Urutan dan Arti:
\ N linefeed (LF atau 0x0A (10) di ASCII)
\ R carriage return (CR atau 0x0D (13) di ASCII)
\ T tab horizontal (HT atau 0x09 (9) di ASCII)
\ V tab vertikal (VT atau 0x0B (11) di ASCII) (sejak PHP 5.2.5)
\ E escape (ESC atau 0x1b (27) di ASCII) (sejak PHP 5.4.4)
\ Bentuk f pakan (FF atau 0x0C (12) di ASCII) (sejak PHP 5.2.5)
\\ backslash
\ Tanda $ dollar
\ "Double-quote
\ [0-7] {1,3} urutan karakter yang cocok dengan ekspresi reguler adalah karakter dalam notasi oktal, yang diam-diam meluap untuk masuk dalam byte (misalnya "\ 400" === "\ 000")
\ X [0-9A-Fa-f] {1,2} urutan karakter yang cocok dengan ekspresi reguler adalah karakter dalam notasi heksadesimal
\ U {[0-9A-Fa-f] +} urutan karakter yang cocok dengan ekspresi reguler adalah codepoint Unicode, yang akan menjadi output ke string sebagai yang codepoint ini UTF-8 representasi (ditambahkan dalam PHP 7.0.0)
Seperti dalam string dikutip tunggal, urutan karakter lain akan menghasilkan backslash yang sedang dicetak juga. Sebelum PHP 5.1.1, backslash di \ {$ var} belum dicetak.
Fitur yang paling penting dari string dikutip ganda adalah kenyataan bahwa nama variabel akan diperluas.

3. sintaks heredoc
Cara ketiga untuk membatasi string adalah sintaks heredoc: <<<. Setelah operator ini, sebuah identifier disediakan, kemudian baris baru. String itu sendiri berikut, dan kemudian identifier yang sama lagi untuk menutup kutipan.
Penutupan identifier harus dimulai pada kolom pertama baris. Juga, pengenal harus mengikuti aturan penamaan yang sama seperti label lainnya di PHP: itu harus hanya berisi karakter alfanumerik dan garis bawah, dan harus dimulai dengan karakter non-digit atau garis bawah.
PERINGATAN
Hal ini sangat penting untuk dicatat bahwa sejalan dengan identifier penutupan harus tidak mengandung karakter lain, kecuali tanda titik koma (;). Itu berarti terutama yang identifier mungkin tidak menjorok, dan mungkin tidak ada spasi atau tab sebelum atau sesudah titik koma. Ini juga penting untuk menyadari bahwa karakter pertama sebelum identifier penutupan harus baris baru seperti yang didefinisikan oleh sistem operasi lokal. Ini \ n pada sistem UNIX, termasuk Mac OS X. Penutupan pembatas juga harus diikuti dengan baris baru.
Jika aturan ini rusak dan penutupan identifier tidak "bersih", itu tidak akan dianggap sebagai identifier penutupan, dan PHP akan terus mencari satu. Jika penutupan identifier yang tepat tidak ditemukan sebelum akhir file saat ini, kesalahan parse akan menghasilkan pada baris terakhir.
Contoh # 1 Contoh valid
<? Php
class foo {
    $ Publik bar = <<< EOT
bar
    EOT;
}
// Identifier tidak boleh menjorok
?>
Contoh # 2 contoh Hari
<? Php
class foo {
    $ Publik bar = <<< EOT
bar
EOT;
}
?>
Heredocs tidak dapat digunakan untuk menginisialisasi properti kelas. Sejak PHP 5.3, keterbatasan ini hanya berlaku untuk heredocs mengandung variabel.
Heredoc teks berperilaku seperti string dikutip ganda, tanpa tanda kutip ganda. Ini berarti bahwa kutipan di heredoc jangan perlu melarikan diri, tapi kode melarikan diri yang tercantum di atas masih bisa digunakan. Variabel diperluas, tapi perawatan yang sama harus diambil ketika mengekspresikan variabel yang kompleks dalam heredoc seperti dengan string.
Contoh # 3 heredoc tali mengutip contoh
<? Php
$ Str = <<< EOD
Misalnya string
mencakup beberapa baris
menggunakan sintaks heredoc.
EOD;
/ * Kompleks Lebih Misalnya, dengan variabel. * /
class foo
{
    var $ foo;
    var $ bar;
    function foo ()
    {
        $ This-> foo = 'Foo';
        $ This-> bar = array ( 'Bar1', 'Bar2', 'Bar3');
    }
}
$ Foo = foo new ();
$ Nama = 'MyName';
echo <<< EOT
Nama saya "$ nama". Saya mencetak beberapa $ foo-> foo.
Sekarang, saya mencetak beberapa {$ foo-> bar [1]}.
Ini harus mencetak modal 'A': \ X41
EOT;
?>
Di atas contoh output akan:
Nama saya "MyName". Saya mencetak beberapa Foo.
Sekarang, saya mencetak beberapa Bar2.
Ini harus mencetak modal 'A': A
Hal ini juga memungkinkan untuk menggunakan sintaks heredoc untuk melewatkan data berfungsi argumen:
Contoh # 4 heredoc di argumen contoh
<? Php
var_dump (array (<<< EOD
foobar!
EOD
));
?>
Pada PHP 5.3.0, itu mungkin untuk menginisialisasi variabel statis dan properti kelas / konstanta menggunakan sintaks heredoc:
Contoh # 5 Menggunakan heredoc untuk menginisialisasi nilai statis
<? Php
// Variabel Static
fungsi foo ()
{
    static $ bar = <<< LABEL
Tidak ada di sini ...
LABEL;
}
// Sifat Kelas / konstanta
class foo
{
    const BAR = <<< foobar
misalnya konstan
foobar;
    publik $ baz = <<< foobar
contoh properti
foobar;
}
?>
Dimulai dengan PHP 5.3.0, identifier pembukaan heredoc pilih dapat tertutup dalam tanda kutip ganda:
Contoh # 6 Menggunakan tanda kutip ganda di heredoc
<? Php
echo<<< "FooBar"
Halo dunia!
foobar;
?>

4. sintaks Nowdoc
Nowdocs adalah untuk string tunggal dikutip apa heredocs yang menggandakan-dikutip string. Sebuah nowdoc ditentukan sama untuk heredoc, tapi tidak ada parsing dilakukan di dalam nowdoc a. konstruk ideal untuk melekatkan kode PHP atau blok besar teks lainnya tanpa perlu melarikan diri. Ini saham beberapa fitur yang sama dengan SGML <! [CDATA []]> membangun, dalam hal ini menyatakan blok teks yang tidak untuk parsing.
Sebuah nowdoc diidentifikasi dengan <<< urutan yang sama digunakan untuk heredocs, tapi identifier yang mengikuti tertutup dalam tanda kutip tunggal, misalnya <<< 'EOT'. Semua aturan untuk identifier heredoc juga berlaku untuk pengidentifikasi nowdoc, terutama yang menyangkut penampilan identifier penutupan.
Contoh # 7 Nowdoc string yang mengutip contoh
<? Php
$ Str = <<< 'EOD'
Misalnya string
mencakup beberapa baris
menggunakan sintaks nowdoc.
EOD;
/ * Kompleks Lebih Misalnya, dengan variabel. * /
class foo
{
    $ Foo publik;
    $ Bar publik;
    function foo ()
    {
        $ This-> foo = 'Foo';
        $ This-> bar = array ( 'Bar1', 'Bar2', 'Bar3');
    }
}
$ Foo = foo new ();
$ Nama = 'MyName';
echo <<< 'EOT'
Nama saya "$ nama". Saya mencetak beberapa $ foo-> foo.
Sekarang, saya mencetak beberapa {$ foo-> bar [1]}.
Hal ini seharusnya tidak mencetak modal 'A': \ X41
EOT;
?>
Di atas contoh output akan:
Nama saya "$ nama". Saya mencetak beberapa $ foo-> foo.
Sekarang, saya mencetak beberapa {$ foo-> bar [1]}.
Hal ini seharusnya tidak mencetak modal 'A': \ X41
Contoh # 8 data statis contoh
<? Php
class foo {
    $ Publik bar = <<< 'EOT'
bar
EOT;
}
?>
catatan:
dukungan Nowdoc ditambahkan dalam PHP 5.3.0.
parsing variabel
Ketika string ditentukan dalam tanda kutip ganda atau dengan heredoc, variabel yang diuraikan di dalamnya.
Ada dua jenis sintaks: yang sederhana dan satu kompleks. Sintaks sederhana adalah yang paling umum dan nyaman. Ini menyediakan cara untuk menanamkan variabel, nilai array, atau properti objek dalam string dengan minimum usaha.
Sintaks kompleks dapat diakui oleh kurung kurawal sekitarnya ekspresi.
sintaks yang sederhana
Jika tanda dolar ($) ditemui, parser rakus akan mengambil banyak token mungkin untuk membentuk nama variabel yang valid. Menyertakan nama variabel dalam kurung kurawal secara eksplisit menentukan akhir nama.
<? Php
$ Jus = "apple";
echo "Dia minum jus $ jus." PHP_EOL.;
// Tidak valid. "S" adalah karakter yang valid untuk nama variabel, tetapi variabel adalah $ jus.
echo "Dia minum jus yang terbuat dari $ jus.";
// Valid. Eksplisit menentukan akhir nama variabel dengan melampirkan dalam kawat gigi:
echo "Dia minum jus yang terbuat dari $ {jus} s."
?>
Di atas contoh output akan:
Dia minum jus apel.
Dia minum jus yang terbuat dari.
Dia minum jus yang terbuat dari apel.
Pada PHP 7.1.0 indeks numerik juga negatif yang didukung.
Contoh # 10 indeks numerik Negatif
<? Php
$ Array = [-3 => 'foo'];
echo "Elemen pada indeks -3 adalah $ array [-3].", PHP_EOL;
?>
Di atas contoh output akan:
Elemen pada indeks -3 adalah foo.
Untuk sesuatu yang lebih kompleks, Anda harus menggunakan sintaks yang kompleks.

Kompleks (keriting) sintaks

Ini tidak disebut kompleks karena sintaks yang kompleks, tapi karena memungkinkan untuk penggunaan ekspresi kompleks.
Setiap variabel skalar, elemen array atau properti objek dengan representasi string dapat dimasukkan melalui sintaks ini. Hanya menulis ekspresi dengan cara yang sama karena akan muncul di luar string, dan kemudian membungkusnya dalam {dan}. Karena {tidak dapat melarikan diri, sintaks ini hanya akan diakui pada saat $ segera mengikuti {. Gunakan {\ $ untuk mendapatkan literal {$. Beberapa contoh untuk membuat jelas:
<? Php
// Tampilkan semua kesalahan
error_reporting (E_ALL);
$ = Besar 'fantastis';
// Tidak akan bekerja, output: Ini adalah {fantastis}
echo "Ini {$ bagus}";
// Pekerjaan, output: Ini fantastis
echo "Ini {$ bagus}";
// Pekerjaan
echo "persegi ini adalah {$ persegi-> width} 00 sentimeter luas.";
// Pekerjaan, kunci dikutip hanya bekerja menggunakan sintaks brace keriting
echo "Ini bekerja: {$ arr [ 'key']}";
// Pekerjaan
echo "Ini bekerja: {$ arr [4] [3]}";
// Ini adalah salah untuk alasan yang sama seperti $ foo [bar] salah luar string.
// Dengan kata lain, itu akan tetap bekerja, tetapi hanya karena PHP pertama terlihat untuk
// Konstan bernama foo; kesalahan dari tingkat E_NOTICE (tidak terdefinisi konstan) akan
// Dilemparkan.
echo "Ini salah: {$ arr [foo] [3]}";
// Bekerja. Bila menggunakan array multi-dimensi, selalu menggunakan kawat gigi sekitar array
// Saat dalam string
echo "Ini bekerja: {$ arr [ 'foo'] [3]}";
// Bekerja.
echo "Ini bekerja:". $ Arr [ 'foo'] [3];
echo "Ini bekerja terlalu: {$ obj-> nilai [3] -> nama}";
echo "ini adalah nilai dari var bernama $ nama: {$ {$ nama}}";
echo "ini adalah nilai var bernama oleh nilai kembali dari getName (): {$ {getName ()}}";
echo "ini adalah nilai var bernama oleh nilai kembali dari \ $ object> getName (): {$ {$ object> getName ()}}";
// Tidak akan bekerja, output: ini adalah nilai kembali dari getName (): {getName ()}
echo "ini adalah nilai kembali dari getName (): {getName ()}";
?>
Hal ini juga memungkinkan untuk mengakses properti kelas menggunakan variabel dalam string menggunakan sintaks ini.
<? Php
class foo {
    var $ bar = 'Saya bar.';
}
$ Foo = foo new ();
$ Bar = 'bar';
$ Baz = array ( 'foo', 'bar', 'baz', 'quux');
echo "{$ foo -> $ bar} \ n";
echo "{$ foo -> {$ baz [1]}} \ n";
?>
Di atas contoh output akan:
Aku Bar.
Aku Bar.
catatan:
Fungsi, pemanggilan metode, variabel kelas statis, dan konstanta kelas dalam {$} bekerja sejak PHP 5. Namun, nilai diakses akan ditafsirkan sebagai nama variabel dalam lingkup di mana string didefinisikan. Menggunakan kurung kurawal tunggal ({}) tidak akan bekerja untuk mengakses kembali nilai-nilai fungsi atau metode atau nilai-nilai konstanta kelas atau variabel kelas statis.
<? Php
// Tampilkan semua kesalahan.
error_reporting (E_ALL);
class bir {
    const softdrink = 'rootbeer';
    public static $ ale = 'ipa';
}
$ Rootbeer = 'A & W';
$ Ipa = 'Alexander Keith \' s ';
// Ini bekerja; output: Saya ingin A & W
echo "Saya mau {$ {bir :: softdrink}} \ n";

// Ini bekerja terlalu; output: Saya mau Alexander Keith
echo "Saya mau {$ {bir :: $ ale}} \ n";
?>

Akses String dan modifikasi dengan karakter

Karakter dalam string dapat diakses dan dimodifikasi dengan menentukan berbasis nol offset karakter yang diinginkan setelah string menggunakan tanda kurung persegi array, seperti dalam $ str [42]. Pikirkan string sebagai array dari karakter untuk tujuan ini. Fungsi substr () dan substr_replace () dapat digunakan ketika Anda ingin mengambil atau mengganti lebih dari 1 karakter.
Catatan: Pada PHP 7.1.0, offset string yang negatif juga didukung. Ini sebutkan offset dari akhir string. Sebelumnya, offset negatif yang dipancarkan E_NOTICE untuk membaca (menghasilkan string kosong) dan E_WARNING untuk menulis (meninggalkan string tersentuh).
Catatan: Strings juga dapat diakses menggunakan kawat gigi, seperti dalam $ str {42}, untuk tujuan yang sama.
PERINGATAN
Menulis untuk keluar dari jangkauan mengimbangi bantalan string dengan spasi. jenis non-integer dikonversi ke integer. Ilegal diimbangi Jenis memancarkan E_NOTICE. Hanya karakter pertama dari string ditugaskan digunakan. Pada PHP 7.1.0, menugaskan sebuah string kosong melempar kesalahan fatal. Sebelumnya, itu diberi byte NULL.
PERINGATAN
Internal, string PHP adalah array byte. Akibatnya, mengakses atau memodifikasi string menggunakan tanda kurung array tidak multi-byte aman, dan hanya boleh dilakukan dengan string yang berada dalam encoding single-byte seperti ISO-8859-1.
Catatan: Pada PHP 7.1.0, menerapkan operator indeks kosong pada string melempar kesalahan fatal. Sebelumnya, string itu diam-diam dikonversi ke array.
Contoh # 11 Beberapa contoh string yang
<? Php
// Dapatkan karakter pertama dari string
$ Str = 'Ini adalah ujian.';
$ Pertama = $ str [0];
// Dapatkan karakter ketiga string
$ Ketiga = $ str [2];
// Dapatkan karakter terakhir dari string.
$ Str = 'ini masih tes.';
$ Terakhir = $ str [strlen ($ str) -1];
// Ubah karakter terakhir dari string
$ Str = 'Lihatlah laut';
$ Str [strlen ($ str) -1] = 'e';
?>
Sebagai PHP 5.4 offset string yang harus berupa integer atau string integer-seperti, jika peringatan akan dilempar. Sebelumnya offset seperti "foo" itu diam-diam dilemparkan ke 0.
Contoh # 12 Perbedaan antara PHP 5.3 dan PHP 5.4
<? Php
$ Str = 'abc';
var_dump ($ str [ '1']);
var_dump (isset ($ str [ '1']));
var_dump ($ str [ '1.0']);
var_dump (isset ($ str [ '1.0']));
var_dump ($ str [ 'x']);
var_dump (isset ($ str [ 'x']));
var_dump ($ str [ '1x']);
var_dump (isset ($ str [ '1x']));
?>
Output dari contoh di atas di PHP 5.3:
String (1) "b"
bool (true)
String (1) "b"
bool (true)
String (1) "a"
bool (true)
String (1) "b"
bool (true)
Output dari contoh di atas di PHP 5.4:
String (1) "b"
bool (true)
Peringatan: string Illegal mengimbangi '1.0' di /tmp/t.php on line 7
String (1) "b"
bool (false)
Peringatan: string Illegal mengimbangi 'x' di /tmp/t.php on line 9
String (1) "a"
bool (false)
String (1) "b"
bool (false)
catatan:
Mengakses variabel jenis lain (tidak termasuk array atau obyek yang mengimplementasikan interface yang sesuai) menggunakan [] atau {} diam-diam NULL.
catatan:
PHP 5.5 menambahkan dukungan untuk mengakses karakter dalam string literal menggunakan [] atau {}.
fungsi yang berguna dan operator
String dapat digabungkan dengan menggunakan '.' (Dot) operator. Perhatikan bahwa (selain) operator + 'tidak akan bekerja untuk ini. Lihat operator String untuk informasi lebih lanjut.
Ada sejumlah fungsi yang berguna untuk manipulasi string.
Ada juga fungsi untuk string URL, dan fungsi untuk mengenkripsi / mendekripsi string (mcrypt dan mhash).

Konversi ke string

Sebuah nilai dapat dikonversi ke string menggunakan (string) cor atau strval (fungsi). konversi String secara otomatis dilakukan dalam lingkup ekspresi mana string diperlukan. Hal ini terjadi ketika menggunakan gema atau cetak fungsi, atau ketika suatu variabel dibandingkan dengan string. Bagian pada Jenis dan Type Juggling akan membuat berikut lebih jelas. Lihat juga settype () fungsi.
Nilai BENAR boolean dikonversi ke string "1". SALAH Boolean dikonversi ke "" (string kosong). Hal ini memungkinkan konversi bolak-balik antara nilai-nilai boolean dan tali.
Integer atau float dikonversi ke string yang mewakili nomor tekstual (termasuk bagian eksponen untuk mengapung). nomor floating point dapat dikonversi menggunakan notasi eksponensial (4.1E + 6).
catatan:
Karakter titik desimal didefinisikan dalam naskah ini lokal (kategori LC_NUMERIC). Lihat fungsi setlocale ().
Array selalu dikonversi ke string "Array"; karena ini, echo dan print tidak bisa sendiri menunjukkan isi dari array. Untuk melihat satu elemen, menggunakan konstruksi seperti echo $ arr [ 'foo']. Lihat di bawah untuk tips tentang melihat seluruh isi.
Dalam rangka untuk mengkonversi objek string metode magic __toString harus digunakan.
Sumber daya selalu dikonversi ke string dengan struktur "Sumber id # 1", di mana 1 adalah jumlah sumber daya yang ditugaskan untuk sumber daya dengan PHP saat runtime. Sementara struktur yang tepat dari string ini tidak boleh diandalkan dan dapat berubah, itu akan selalu menjadi unik untuk sumber daya yang diberikan dalam seumur hidup dari script dieksekusi (yaitu permintaan Web atau CLI proses) dan tidak akan digunakan kembali . Untuk mendapatkan jenis sumber daya, gunakan get_resource_type () fungsi.
NULL selalu dikonversi ke string kosong.
Sebagaimana dinyatakan di atas, langsung mengkonversi sebuah array, objek, atau sumber daya untuk string tidak memberikan informasi yang berguna tentang nilai luar jenisnya. Melihat fungsi print_r () dan var_dump () untuk cara yang lebih efektif memeriksa isi jenis.
Kebanyakan nilai-nilai PHP juga dapat dikonversi ke string untuk penyimpanan permanen. Metode ini disebut serialisasi, dan dilakukan oleh cerita bersambung () fungsi. Jika mesin PHP dibangun dengan dukungan WDDX, nilai-nilai PHP juga dapat serial sebagai well-formed teks XML.
konversi string untuk nomor
Ketika string dievaluasi dalam konteks numerik, nilai yang dihasilkan dan jenis ditentukan sebagai berikut.
Jika string tidak mengandung karakter '.', 'E', atau 'E' dan nilai numerik cocok menjadi batas tipe integer (seperti yang didefinisikan oleh PHP_INT_MAX), string akan dievaluasi sebagai integer. Dalam semua kasus lain itu akan dievaluasi sebagai pelampung.
Nilai yang diberikan oleh bagian awal string. Jika string dimulai dengan data numerik yang valid, ini akan menjadi nilai yang digunakan. Jika tidak, nilai akan 0 (nol). data numerik yang valid adalah tanda opsional, diikuti oleh satu atau lebih digit (opsional berisi titik desimal), diikuti oleh eksponen opsional. eksponen adalah 'e' atau 'E' diikuti oleh satu atau lebih digit.
<? Php
$ Foo = 1 + "10.5"; // $ Foo adalah mengambang (11,5)
$ Foo = 1 + "-1.3e3"; // $ Foo adalah mengambang (-1299)
$ Foo = 1 + "bob-1.3e3"; // $ Foo adalah bilangan bulat (1)
$ Foo = 1 + "bob3"; // $ Foo adalah bilangan bulat (1)
$ Foo = 1 + "10 Kecil Babi"; // $ Foo adalah bilangan bulat (11)
$ Foo = 4 + "10,2 Piggies kecil"; // $ Foo adalah mengambang (14,2)
$ Foo = "10,0 babi" + 1; // $ Foo adalah mengambang (11)
$ Foo = "10,0 babi" + 1.0; // $ Foo adalah mengambang (11)
?>
Untuk menguji salah satu contoh di bagian ini, memotong dan paste contoh dan masukkan baris berikut untuk melihat apa yang terjadi:
<? Php
echo "\ $ foo == $ foo; type". gettype ($ foo). "<br /> \ N";
?>
Jangan berharap untuk mendapatkan kode satu karakter dengan mengubahnya ke integer, seperti yang dilakukan di C. Gunakan ord () dan chr () fungsi untuk mengkonversi antara kode ASCII dan karakter.

Kamis, 12 Januari 2017

Referensi Bahasa PHP (Bagian II)

TIPE DATA PHP

A. Booleans

Ini adalah jenis yang paling sederhana. Sebuah boolean mengekspresikan nilai kebenaran. Hal ini dapat benar atau salah.

Sintaksis
Untuk menentukan literal boolean, menggunakan konstanta TRUE atau FALSE. Keduanya kasus-sensitif.

<? Php
$ Foo = True; // Menetapkan nilai TRUE untuk $ foo
?>

Biasanya, hasil dari operator yang mengembalikan nilai boolean diteruskan ke struktur kontrol.

<? Php
// == Adalah operator yang menguji
// Kesetaraan dan mengembalikan boolean
if ($ tindakan == "show_version") {
    echo "Versi 1.23";
}
// Ini tidak perlu ...
if ($ show_separators == TRUE) {
    echo "<hr> \ n";
}
// ... Karena ini dapat digunakan dengan arti yang sama persis:
if ($ show_separators) {
    echo "<hr> \ n";
}
?>

Konversi ke boolean

Secara eksplisit mengkonversi nilai untuk boolean, menggunakan (bool) atau (boolean) gips. Namun, dalam banyak kasus pemain tidak perlu, karena nilai akan otomatis dikonversi jika seorang operator, fungsi atau struktur kontrol membutuhkan argumen boolean.

Ketika mengkonversi ke boolean, nilai-nilai berikut dianggap SALAH:
◦ yang boolean SALAH sendiri
◦ integer 0 (nol)
◦ float 0.0 (nol)
◦ string kosong, dan string "0"
◦ array dengan nol elemen
◦ jenis NULL khusus (termasuk variabel unset)
benda ◦ SimpleXML diciptakan dari tag kosong
Setiap nilai lain dianggap BENAR/true (termasuk sumber daya apapun).

PERINGATAN
-1 Dianggap TRUE, seperti non-zero lainnya (apakah negatif atau positif) nomor!
<? Php
var_dump ((bool) ""); // Bool (false)
var_dump ((bool) 1); // Bool (true)
var_dump ((bool) -2); // Bool (true)
var_dump ((bool) "foo"); // Bool (true)
var_dump ((bool) 2.3e5); // Bool (true)
var_dump ((bool) array (12)); // Bool (true)
var_dump ((bool) array ()); // Bool (false)
var_dump ((bool) "false"); // Bool (true)
?>

B. Integer / bilangan bulat

Integer adalah jumlah himpunan ℤ = {..., -2, -1, 0, 1, 2, ...}.
Sintaksis
Bilangan bulat dapat ditentukan dalam desimal (basis 10), heksadesimal (basis 16), oktal (basis 8) atau biner (basis 2) notasi, opsional diawali dengan tanda (- atau +).
integer literal biner yang tersedia sejak PHP 5.4.0.
Untuk menggunakan notasi oktal, mengawali nomor dengan 0 (nol). Untuk menggunakan notasi heksadesimal mendahului nomor dengan 0x. Untuk menggunakan notasi biner mendahului nomor dengan 0b.

Contoh # 1 Integer literal

<? Php
$ A = 1234; // angka desimal
$ A = -123; // Angka negatif
$ A = 0123; // Bilangan oktal (setara dengan 83 desimal)
$ A = 0x1A; // Angka heksadesimal (setara dengan 26 desimal)
$ A = 0b11111111; // Bilangan biner (setara dengan 255 desimal)
?>

Secara formal, struktur untuk literal integer adalah:
desimal: [1-9] [0-9] *
            | 0
heksadesimal: 0 [xX] [0-9a-FA-F] +
oktal: 0 [0-7] +
biner: 0b [01] +
integer:? [+ -] desimal
            | [+ -]? Heksadesimal
            | [+ -]? Oktal
            | [+ -] Biner?

Ukuran integer adalah tergantung platform, meskipun nilai maksimum sekitar dua miliar adalah nilai yang biasa (yang 32 bit ditandatangani). platform 64-bit biasanya memiliki nilai maksimum sekitar 9E18, kecuali pada Windows sebelum PHP 7, di mana itu selalu 32 bit. PHP tidak mendukung unsigned integer. Ukuran integer dapat ditentukan dengan menggunakan PHP_INT_SIZE konstan, nilai maksimum menggunakan PHP_INT_MAX konstan sejak PHP 5.0.5, dan nilai minimum menggunakan PHP_INT_MIN konstan sejak PHP 7.0.0.

PERINGATAN
Sebelum PHP 7, jika digit tidak valid diberikan dalam integer oktal (yaitu 8 atau 9), sisa jumlah itu diabaikan. Sejak PHP 7, kesalahan parse dipancarkan.
integer overflow

Jika PHP bertemu sejumlah melampaui batas-batas jenis integer, itu akan ditafsirkan sebagai tipe float sebagai gantinya. Juga, sebuah operasi yang menghasilkan sejumlah melampaui batas-batas dari tipe integer akan kembali jadi float sebagai gantinya.

Contoh # 2 Integer overflow pada sistem 32-bit

<? Php
$ LARGE_NUMBER = 2147483647;
var_dump ($ LARGE_NUMBER); // Int (2147483647)
$ LARGE_NUMBER = 2147483648;
var_dump ($ LARGE_NUMBER); // float (2147483648)
$ Juta = 1000000;
$ LARGE_NUMBER = 50000 * $ juta;
var_dump ($ LARGE_NUMBER); // float (50000000000)
?>

Contoh # 3 Integer overflow pada sistem 64-bit

<? Php
$ LARGE_NUMBER = 9223372036854775807;
var_dump ($ LARGE_NUMBER); // Int (9223372036854775807)
$ LARGE_NUMBER = 9223372036854775808;
var_dump ($ LARGE_NUMBER); // float (9.2233720368548E + 18)
$ Juta = 1000000;
$ LARGE_NUMBER = 50000000000000 * $ juta;
var_dump ($ LARGE_NUMBER); // float (5.0E + 19)
?>

Tidak ada operator pembagian integer di PHP. 1/2 menghasilkan float 0,5. nilai tersebut dapat dicor ke integer untuk melengkapi itu menuju nol, atau putaran () fungsi memberikan kontrol yang lebih baik atas pembulatan.

<? Php
var_dump (25/7); // float (3,5714285714286)
var_dump ((int) (25/7)); // Int (3)
var_dump (round (25/7)); // float (4)
?>

Konversi ke integer

Secara eksplisit mengkonversi nilai ke integer, menggunakan baik (int) atau (integer) gips. Namun, dalam banyak kasus pemain tidak diperlukan, karena nilai akan otomatis dikonversi jika seorang operator, fungsi atau struktur kontrol membutuhkan argumen integer. Nilai juga dapat dikonversi ke integer dengan intval () fungsi.

Jika sumber daya dikonversi ke integer, maka hasilnya akan menjadi nomor sumber daya unik yang diberikan untuk sumber daya dengan PHP saat runtime.

dari boolean

SALAH(false) akan menghasilkan 0 (nol), dan BENAR(true) akan menghasilkan 1 (satu).
Dari angka floating point
Ketika mengkonversi dari float ke integer, nomor tersebut akan dibulatkan ke nol.
Jika float adalah di luar batas-batas bilangan bulat (biasanya +/- 2.15e + 9 = 2 ^ 31 pada platform 32-bit dan +/- 9.22e + 18 = 2 ^ 63 pada platform 64-bit selain Windows), hasilnya tidak terdefinisi, karena mengambang tidak memiliki cukup presisi untuk memberikan hasil bilangan bulat yang tepat. Tidak ada peringatan, bahkan tidak pemberitahuan akan dikeluarkan jika hal ini terjadi!

catatan:
Pada PHP 7.0.0, bukannya tidak terdefinisi dan tergantung platform, NaN dan Infinity akan selalu menjadi nol ketika dilemparkan ke integer.

PERINGATAN
Tidak pernah melemparkan sebuah fraksi yang tidak diketahui ke integer, karena hal ini kadang-kadang dapat menyebabkan hasil yang tidak diharapkan.

<? Php
echo (int) ((0,1 + 0,7) * 10); // dicetak 7!
?>

Dari jenis lain

Peringatan
Perilaku mengkonversi ke integer tidak terdefinisi untuk jenis lainnya. Jangan bergantung pada setiap perilaku yang diamati, karena dapat berubah tanpa pemberitahuan.

C.Angka floating point

Angka floating point (juga dikenal sebagai "mengapung", "ganda", atau "bilangan real") dapat ditentukan dengan menggunakan salah satu sintaks berikut:

<? Php
$ A = 1,234;
$ B = 1.2e3;
$ C = 7E-10;
?>

Secara formal:
LNUM [0-9] +
DNUM ([0-9] * [\.] {LNUM}) | ({} LNUM [\.] [0-9] *)
EXPONENT_DNUM [+ -]? (({LNUM} |? {DNUM}) [eE] [+ -] {LNUM})
Ukuran float adalah tergantung platform, walaupun maksimum ~ 1.8e308 dengan presisi sekitar 14 digit desimal adalah nilai umum (64 bit format yang IEEE).

PERINGATAN
Floating point presisi
nomor floating point telah presisi terbatas. Meskipun tergantung pada sistem, PHP biasanya menggunakan IEEE 754 Format presisi ganda, yang akan memberikan kesalahan relatif maksimum karena pembulatan di urutan 1.11e-16. operasi aritmatika non SD dapat memberikan kesalahan yang lebih besar, dan, tentu saja, kesalahan propagasi harus dipertimbangkan ketika beberapa operasi diperparah.

Selain itu, bilangan rasional yang persis representable sebagai angka floating point dalam basis 10, seperti 0,1 atau 0,7, tidak memiliki representasi yang tepat sebagai angka floating point dalam basis 2, yang digunakan secara internal, tidak peduli ukuran mantissa. Oleh karena itu, mereka tidak dapat dikonversi menjadi rekan biner internal mereka tanpa kerugian kecil presisi. Hal ini dapat menyebabkan hasil yang membingungkan: misalnya, lantai ((0,1 + 0,7) * 10) biasanya akan kembali 7 bukannya diharapkan 8, karena representasi internal akan menjadi sesuatu seperti 7,9999999999999991118 ....

Jadi tidak pernah percaya float hasil angka ke angka terakhir, dan tidak membandingkan angka floating point langsung untuk kesetaraan. Jika presisi tinggi diperlukan, fungsi presisi matematika sewenang-wenang dan fungsi gmp tersedia.

Mengkonversi float

Untuk informasi tentang mengkonversi string mengapung, melihat konversi String ke nomor. Untuk nilai jenis lain, konversi dilakukan dengan mengkonversi nilai ke integer pertama dan kemudian float. Pada PHP 5, pemberitahuan dilemparkan jika sebuah objek diubah untuk mengapung.
membandingkan float
Seperti yang tercantum dalam peringatan di atas, pengujian nilai floating point untuk kesetaraan yang bermasalah, karena cara bahwa mereka diwakili secara internal. Namun, ada cara untuk membuat perbandingan dari nilai floating point yang bekerja di sekitar keterbatasan ini.
Untuk menguji nilai floating point untuk kesetaraan, batas atas kesalahan relatif karena pembulatan digunakan. Nilai ini dikenal sebagai epsilon mesin, atau unit pembulatan, dan perbedaan diterima terkecil dalam perhitungan.

$ A dan $ b adalah sama dengan 5 digit presisi.
<? Php
$ A = 1.23456789;
$ B = 1.23456780;
$ Epsilon = 0,00001;
jika (abs ($ a- $ b) <$ epsilon) {
    echo "benar";
}
?>

NaN
Beberapa operasi numerik dapat menghasilkan nilai diwakili oleh NAN konstan. Hasil ini merupakan nilai terdefinisi atau Unrepresentable dalam perhitungan floating-point. Setiap perbandingan longgar atau ketat nilai ini terhadap nilai lain, termasuk dirinya, akan memiliki hasil SALAH (false).
Karena NAN mewakili sejumlah nilai yang berbeda, NAN tidak harus dibandingkan dengan nilai-nilai lain, termasuk dirinya sendiri, dan bukannya harus diperiksa untuk menggunakan is_nan ().

Referensi Bahasa PHP (Bagian I)

I. SINTAKS DASAR

A. TAG PHP

Ketika PHP mem-parsing file, terlihat untuk membuka dan menutup tag, yang <? Php dan?> Yang memberitahu PHP untuk memulai dan menghentikan menafsirkan kode di antara mereka. Parsing dengan cara ini memungkinkan PHP untuk dimasukkan dalam segala macam dokumen yang berbeda, seperti segala sesuatu di luar sepasang pembukaan dan penutupan tag diabaikan oleh parser PHP.
PHP juga memungkinkan untuk tag terbuka pendek <? (Yang tidak disarankan karena hanya tersedia jika diaktifkan menggunakan short_open_tag php.ini file konfigurasi direktif, atau jika PHP dikonfigurasi dengan opsi enable-short-tag).
Jika suatu file adalah kode PHP murni, adalah lebih baik untuk menghilangkan tag PHP penutupan pada akhir file. Hal ini untuk mencegah tidak sengaja menambahkan spasi kosong atau baris baru yang ditambahkan setelah tag PHP penutupan, yang dapat menyebabkan efek yang tidak diinginkan karena PHP akan mulai output buffering ketika tidak ada niat dari programmer untuk mengirim output apapun pada saat itu di script.

<? Php
echo "Halo dunia";
// ... Kode lebih
echo "Pernyataan terakhir";
// Script berakhir di sini tanpa tag penutup PHP

php versi 7.0.0: Tag ASP <%,%>, <% =, dan tag script <script language = "php"> dihilangkan dari PHP.
php versi 5.4.0: Tag <? = Selalu tersedia terlepas dari pengaturan dari short_open_tag.

B. Melepaskan diri dari HTML

Segala sesuatu di luar dari sepasang pembukaan dan penutupan tag diabaikan oleh parser PHP yang memungkinkan file PHP untuk memiliki konten campuran. Hal ini memungkinkan PHP untuk dimasukkan dalam dokumen HTML, misalnya untuk membuat template.

<P> ini akan diabaikan oleh PHP dan ditampilkan oleh browser. </ P>
<? Php echo 'Sementara ini akan diurai.'; ?>
<P> ini juga akan diabaikan oleh PHP dan ditampilkan oleh browser. </ P>

Ini bekerja seperti yang diharapkan, karena ketika PHP interpreter hits> menutup tag, itu hanya dimulai keluaran apa pun yang ditemukan (kecuali untuk baris baru segera setelah - melihat pemisahan instruksi)? Sampai hits tag pembuka lain kecuali di tengah pernyataan kondisional dalam hal penafsir akan menentukan hasil dari bersyarat sebelum membuat keputusan tentang apa yang harus melewatkan. Lihat contoh berikut.

Menggunakan struktur dengan kondisi
Contoh # 1 Lanjutan melarikan diri menggunakan kondisi

<? Php if ($ ekspresi == true):?>
Ini akan menunjukkan jika ungkapan benar.
<? Php lain:?>
Jika tidak ini akan menunjukkan.
<? Php endif; ?>

Dalam contoh ini PHP akan melewatkan blok mana kondisi ini tidak terpenuhi, meskipun mereka berada di luar PHP terbuka / tag dekat; PHP melompat mereka sesuai dengan kondisi sejak PHP interpreter akan melompati blok terkandung dalam suatu kondisi yang tidak terpenuhi.

Untuk keluaran blok besar teks, putus modus parsing PHP umumnya lebih efisien daripada mengirimkan semua teks melalui echo atau print.

 Dalam PHP 5, ada yang sampai lima pasang yang berbeda dari pembukaan dan penutupan tag yang tersedia di PHP, tergantung pada bagaimana PHP dikonfigurasi. Dua ini, <? Php?> Dan <script language = "php"> </ script>, selalu tersedia. Ada juga tag echo pendek <? =?>, Yang selalu tersedia di PHP 5.4.0 dan versi setelahnya.

 Dua lainnya adalah tag pendek dan tag gaya ASP. Dengan demikian, sementara beberapa orang menemukan tag pendek dan ASP tag gaya nyaman, mereka kurang portable, dan umumnya tidak dianjurkan.

catatan:
Juga mencatat bahwa jika Anda embedding PHP dalam XML atau XHTML Anda akan perlu menggunakan <? Php?> Tag untuk tetap sesuai dengan standar.

PHP 7 menghilangkan dukungan untuk tag ASP dan <script language = "php"> tag. Dengan demikian, saya sarankan hanya menggunakan <? Php?> Dan <? =?> Ketika menulis kode PHP untuk memaksimalkan kompatibilitas.

Contoh # 2 PHP Pembukaan dan Penutupan Tags

1. <? Php echo 'jika Anda ingin melayani kode PHP di XHTML atau XML dokumen,
menggunakan tag '; ?>
2. Anda dapat menggunakan tag echo singkat ke <? = 'Print string ini'?>.
Itu selalu diaktifkan di PHP 5.4.0 dan kemudian, dan setara dengan
<? Php echo 'print string ini'?>.
3. <? echo 'kode ini dalam tag pendek, tetapi hanya akan bekerja'.
'Jika short_open_tag diaktifkan'; ?>
4. <script language = "php">
echo 'beberapa editor (seperti FrontPage) tidak mendukung pengolahan instruksi dalam tag ini ';
</ Script>
sintaks ini dihapus di PHP 7.0.0.
5. <% echo 'Anda mungkin opsional menggunakan tag ASP-gaya'; %>

Kode dalam tag ini <% = $ variabel; %> Adalah cara pintas untuk kode ini <% echo $ variabel; %>
Kedua sintaks ini ditiadakan dalam PHP 7.0.0.
tag singkat (contoh nomor tiga) hanya tersedia ketika mereka diaktifkan melalui short_open_tag php.ini file konfigurasi direktif, atau jika PHP dikonfigurasi dengan opsi enable-short-tags.
tag gaya ASP (contoh nomor lima) hanya tersedia ketika mereka diaktifkan melalui asp_tags php.ini
 file konfigurasi direktif, dan telah dihapus di PHP 7.0.0.

catatan:
Menggunakan tag pendek harus dihindari ketika mengembangkan aplikasi atau perpustakaan yang dimaksudkan untuk redistribusi, atau penyebaran pada server PHP yang tidak berada di bawah kendali Anda, karena tag pendek mungkin tidak didukung pada server target. Untuk portabel, kode disebarkan kembali, pastikan untuk tidak menggunakan tag singkat.

catatan:
Dalam PHP 5.2 dan sebelumnya, parser tidak mengizinkan <? Php tag pembuka menjadi satu-satunya hal dalam file. Ini diperbolehkan sebagai PHP 5.3 tersedia ada satu atau lebih karakter spasi setelah tag pembuka.

catatan:
Dimulai dengan PHP 5.4, tag echo pendek <? = Selalu diakui dan sah, terlepas dari pengaturan short_open_tag.

C. pemisahan instruksi

Seperti di C atau Perl, PHP membutuhkan petunjuk harus diakhiri dengan tanda titik koma di akhir setiap pernyataan. Tag penutup dari blok kode PHP secara otomatis menyiratkan titik koma; Anda tidak perlu memiliki titik koma mengakhiri baris terakhir blok PHP. Pada tag penutup untuk blok akan menyertakan baris baru segera mengikuti jika ada yang hadir.

<? Php
echo 'Ini adalah tes';
?>
<? Php echo 'Ini adalah tes'?>
<? Php echo 'Saya menghilangkan bagian terakhir tag penutup';

 catatan:
Tag penutup blok PHP di akhir file adalah opsional, dan dalam beberapa kasus menghilangkan itu membantu ketika menggunakan memasukkan atau membutuhkan, sehingga spasi yang tidak diinginkan tidak akan terjadi pada akhir file, dan Anda masih dapat menambahkan header untuk respon nanti. Hal ini juga berguna jika Anda menggunakan output buffering, dan tidak ingin melihat menambahkan spasi yang tidak diinginkan pada akhir bagian yang dihasilkan oleh file yang disertakan.

D. komentar

PHP mendukung 'C', 'C ++' dan Unix shell-style (Perl gaya) komentar. Sebagai contoh:
<? Php
    echo'Ini adalah tes'; // Ini adalah satu-line c ++ gaya komentar
    / * Ini adalah multi baris komentar
       belum baris lain komentar * /
    echo 'Ini belum tes lain';
    echo 'One Akhir Test'; # Ini adalah satu-baris komentar shell-style
?>

"Satu-line" gaya komentar hanya komentar ke akhir baris atau blok saat kode PHP, mana yang lebih dulu. Ini berarti bahwa kode HTML setelah // ...> atau # ...> AKAN dicetak:???> Istirahat keluar dari mode PHP dan kembali ke mode HTML, dan // atau # tidak dapat mempengaruhi itu. Jika direktif konfigurasi asp_tags diaktifkan, berperilaku sama dengan //%> dan #%>. Namun, </ script> tag tidak keluar dari modus PHP dalam komentar satu baris.

<H1> Ini adalah <php # echo 'sederhana';??> Contoh </ h1>
<P> sundulan di atas akan mengatakan 'Ini adalah contoh'. </ P>

'C' gaya komentar berakhir pada pertama * / temui. Pastikan Anda tidak buat sarang seperti gaya komentar bahasa 'C' . Sangat mudah untuk membuat kesalahan ini jika Anda mencoba untuk komentar blok besar kode.

 <? Php
 / *
    echo 'Ini adalah tes'; / * Komentar ini akan menyebabkan masalah * /
 * /
?>

II. TIPE DATA

PHP mendukung delapan tipe primitif.

Empat jenis skalar: boolean, bilangan bulat, mengambang (floating-point, alias ganda), string
Tiga jenis majemuk: Array, objek, callable
Dan akhirnya dua jenis khusus: resource dan NULL

PHP saat ini juga memperkenalkan beberapa pseudo-jenis untuk alasan dibaca:
mixed, number, callback (alias callable), Array/objek, void dan pseudo-variabel $ ....

Beberapa referensi untuk jenis "double" mungkin tetap dalam tutorial ini. Pertimbangkan tipe double sama saja dengan float; dua nama berbeda yang ada hanya untuk alasan historis.
Jenis variabel tidak biasanya ditetapkan oleh programmer; bukan, itu diputuskan pada saat runtime dengan PHP tergantung pada konteks di mana variabel yang digunakan.

Catatan: Untuk memeriksa jenis dan nilai dari sebuah ekspresi, menggunakan fungsi var_dump ().
Untuk mendapatkan representasi manusia-dibaca dari jenis untuk debugging, gunakan gettype () fungsi. Untuk memeriksa jenis tertentu, tidak menggunakan gettype (), melainkan fungsi is_type.

Beberapa contoh:

 <? Php
$ A_bool = TRUE; // Boolean
$ A_str = "foo"; // Sebuah string
'Foo' $ a_str2 =; // Sebuah string
$ An_int = 12; // Integer
echo gettype ($ a_bool); // Mencetak: boolean
echo gettype ($ a_str); // Mencetak: string
// Jika ini adalah integer, kenaikan itu oleh empat
jika (is_int ($ an_int)) {
    $ An_int + = 4;
}
// Jika $ a_bool adalah string, mencetaknya
// (Tidak mencetak apa pun)
jika (is_string ($ a_bool)) {
    echo "String: $ a_bool";
}
?>

Untuk paksa mengkonversi variabel untuk jenis tertentu, baik dilemparkan variabel atau menggunakan settype () fungsi di atasnya.
Perhatikan bahwa variabel dapat dievaluasi dengan nilai yang berbeda dalam situasi tertentu, tergantung pada jenis apa itu pada saat itu. Untuk informasi lebih lanjut, lihat bagian Type Juggling. Tabel perbandingan type juga dapat berguna, karena mereka menunjukkan contoh dari berbagai terkait jenis perbandingan.

Pengenalan PHP (Bagian II)

Sesuatu yang berguna

 Mari kita melakukan sesuatu yang lebih berguna sekarang. Kami akan memeriksa apa jenis browser pengunjung menggunakan. Untuk itu, kami memeriksa string agen pengguna browser mengirimkan sebagai bagian dari permintaan HTTP. Informasi ini disimpan dalam variabel. Variabel selalu mulai dengan dolar-tanda di PHP. Variabel kita tertarik sekarang adalah $ _SERVER [ 'HTTP_USER_AGENT'].

 catatan:

 $ _SERVER Adalah variabel PHP yang dipesan khusus yang berisi semua informasi web server. Hal ini dikenal sebagai superglobal a. Lihat halaman manual terkait pada superglobals untuk informasi lebih lanjut. Variabel-variabel khusus diperkenalkan di PHP »4.1.0. Sebelum saat ini, kami menggunakan lebih tua $ HTTP _ * _ VARS array sebaliknya, seperti $ HTTP_SERVER_VARS. Pada PHP 5.4.0 variabel-variabel yang lebih tua telah dihapus. (Lihat juga catatan pada kode lama.)
 Untuk menampilkan variabel ini, Anda hanya dapat melakukan:

 Contoh # 1 Percetakan variabel (Array elemen)

 <? Php
 echo $ _SERVER [ 'HTTP_USER_AGENT'];
 ?>

 Sebuah contoh output dari script ini mungkin:
  Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1)
 Ada banyak jenis variabel yang tersedia di PHP. Dalam contoh di atas kita dicetak elemen Array. Array dapat sangat berguna.

 $ _SERVER Adalah salah satu variabel yang PHP secara otomatis membuat tersedia untuk Anda. Daftar dapat dilihat di bagian Variabel Reserved dari manual atau Anda bisa mendapatkan daftar lengkap dari mereka dengan melihat output dari fungsi phpinfo () digunakan dalam contoh di bagian sebelumnya.

 Anda dapat menempatkan beberapa pernyataan PHP di dalam tag PHP dan membuat sedikit blok kode yang melakukan lebih dari sekedar gema tunggal. Misalnya, jika Anda ingin memeriksa Internet Explorer Anda dapat melakukan ini:

 Contoh # 2 contoh menggunakan struktur kontrol dan fungsi

 <? Php
 if (strpos ($ _ SERVER [ 'HTTP_USER_AGENT'], 'MSIE')! == FALSE) {
     echo 'Anda menggunakan Internet Explorer <br />.';
 }
 ?>

 Sebuah contoh output dari script ini mungkin:
 Anda menggunakan Internet Explorer. <br />

 Di sini sayamemperkenalkan beberapa konsep-konsep baru. Kami memiliki pernyataan jika. Jika Anda sudah familiar dengan sintaks dasar yang digunakan oleh bahasa C, ini akan terlihat logis untuk Anda. Jika tidak, Anda mungkin harus mengambil sebuah buku PHP pengantar dan membaca beberapa pertama bab, atau membaca bagian Referensi Bahasa manual.

 Konsep kedua saya memperkenalkan adalah strpos () fungsi panggilan. strpos () adalah fungsi yang dibangun ke PHP yang mencari string untuk string lain. Dalam hal ini kami sedang mencari 'MSIE' (disebut jarum) di dalam $ _SERVER [ 'HTTP_USER_AGENT'] (yang disebut tumpukan jerami). Jika jarum ditemukan di dalam tumpukan jerami, fungsi mengembalikan posisi jarum relatif terhadap awal tumpukan jerami. Jika tidak, ia mengembalikan FALSE. Jika tidak kembali FALSE, jika ekspresi bernilai TRUE dan kode dalam nya {kurung} dijalankan. Jika tidak, kode ini tidak dijalankan. Jangan ragu untuk membuat contoh-contoh serupa, dengan jika, lain, dan fungsi lain seperti strtoupper () dan strlen (). Setiap halaman buku panduan yang berkaitan berisi contoh-contoh juga. Jika Anda tidak yakin bagaimana menggunakan fungsi, Anda akan ingin membaca baik halaman manual tentang cara membaca definisi fungsi dan bagian tentang fungsi PHP.

 Kita bisa mengambil langkah lebih lanjut dan menunjukkan bagaimana Anda bisa melompat masuk dan keluar dari modus PHP bahkan di tengah-tengah blok PHP:

 Contoh # 3 Mencampur baik HTML dan mode PHP

 <? Php
 if (strpos ($ _ SERVER [ 'HTTP_USER_AGENT'], 'MSIE')! == FALSE) {
 ?>
 <H3> strpos () harus kembali non-palsu </ h3>
 <P> Anda menggunakan Internet Explorer </ p>
 <? Php
 } lain {
 ?>
 <H3> strpos () harus kembali palsu </ h3>
 <P> Anda tidak menggunakan Internet Explorer </ p>
 <? Php
 }
 ?>

 Sebuah contoh output dari script ini mungkin:
 <H3> strpos () harus kembali non-palsu </ h3>
 <P> Anda menggunakan Internet Explorer </ p>

 Alih-alih menggunakan PHP echo pernyataan untuk output sesuatu, kita melompat keluar dari mode PHP dan hanya mengirim HTML lurus. Titik penting dan kuat untuk dicatat di sini adalah bahwa aliran logis dari script tetap utuh. Hanya salah satu blok HTML akan akhirnya mendapatkan dikirim ke penampil tergantung pada hasil strpos (). Dengan kata lain, itu tergantung pada apakah string MSIE ditemukan atau tidak.

 Berurusan dengan Formulir

 Salah satu fitur yang paling kuat dari PHP adalah cara menangani bentuk HTML. Konsep dasar yang penting untuk dipahami adalah bahwa setiap bentuk elemen otomatis akan tersedia untuk skrip PHP Anda. Silakan baca bagian manual pada Variabel dari sumber eksternal untuk informasi lebih lanjut dan contoh tentang cara menggunakan formulir dengan PHP. Berikut adalah contoh bentuk HTML:

 Contoh # 1 Bentuk HTML sederhana

 <Form action = "action.php" method = "post">
  <P> Nama Anda: <input type = "text" name = "nama" /> </ p>
  <P> usia Anda: <input type = "text" name = "usia" /> </ p>
  <P> <input type = "submit" /> </ p>
 </ Form>

 Tidak ada yang khusus tentang bentuk. Ini adalah bentuk HTML lurus tanpa tag khusus apapun. Ketika user mengisi form dan menekan tombol submit, halaman action.php disebut. Dalam file ini Anda akan menulis sesuatu seperti ini:

 Contoh # 2 Printing data dari formulir kami

  ? Hi <htmlspecialchars php echo ($ _ POST [ 'nama']); ?>.
 Anda <php echo (int) $ _ POST [ 'age']; ?> Tahun.

 Sebuah contoh output dari script ini mungkin:
 Hi Joe. Anda berusia 22 tahun.

 Terlepas dari htmlspecialchars () dan (int) bagian, harus jelas apa hal ini. htmlspecialchars () memastikan setiap karakter yang khusus di html dengan benar dikodekan sehingga orang tidak dapat menyuntikkan tag HTML atau Javascript ke halaman Anda. Untuk bidang usia, karena kita tahu itu adalah angka, kita bisa saja dikonversi ke integer yang akan secara otomatis menyingkirkan setiap karakter liar. Anda juga dapat memiliki PHP melakukan ini untuk Anda secara otomatis dengan menggunakan ekstensi filter. The $ _POST [ 'nama'] dan $ _POST [ 'usia'] variabel secara otomatis ditetapkan untuk Anda oleh PHP. Sebelumnya kami menggunakan superglobal $ _SERVER; di atas kami hanya memperkenalkan superglobal $ _POST yang berisi semua data POST. Perhatikan bagaimana metode formulir kami adalah POST. Jika kita menggunakan metode GET maka informasi formulir kami akan tinggal di $ _GET superglobal gantinya. Anda juga dapat menggunakan $ _REQUEST superglobal, jika Anda tidak peduli tentang sumber data permintaan Anda. Ini berisi informasi gabungan dari GET, POST dan data COOKIE.

 Anda juga dapat menangani XForms masukan di PHP, meskipun Anda akan menemukan diri Anda nyaman dengan bentuk HTML didukung untuk beberapa waktu. Ketika bekerja dengan XForms bukan untuk pemula, Anda mungkin akan tertarik pada mereka. Kami juga memiliki pengenalan singkat untuk menangani data yang diterima dari XForms di bagian fitur php.
 Menggunakan kode lama dengan versi baru dari PHP

 Sekarang PHP telah berkembang menjadi bahasa scripting populer, ada banyak repositori publik dan perpustakaan yang berisi kode Anda dapat menggunakan kembali. Para pengembang PHP sebagian besar telah mencoba untuk melestarikan kompatibilitas mundur, sehingga naskah yang ditulis untuk versi lama akan berjalan (idealnya) tanpa perubahan dalam versi yang lebih baru dari PHP. Dalam prakteknya, beberapa perubahan biasanya akan dibutuhkan.

 Dua dari perubahan terbaru yang paling penting yang mempengaruhi kode lama adalah:
◦ tua $ HTTP _ * _ vars array tidak tersedia pada PHP 5.4.0. Berikut array superglobal diperkenalkan di PHP »4.1.0. Mereka adalah: $ _GET, $ _POST, $ _COOKIE, $ _SERVER, $ _FILES, $ _ENV, $ _REQUEST, dan $ _SESSION.

 variabel eksternal ◦ tidak lagi terdaftar di lingkup global secara default. Dengan kata lain, sebagai PHP »4.2.0 PHP direktif register_globals tidak aktif secara default di php.ini. Metode yang disukai untuk mengakses nilai-nilai ini adalah melalui array superglobal yang disebutkan di atas. skrip yang lebih tua, buku, dan tutorial dapat mengandalkan direktif ini berada di. Jika itu pada, misalnya, orang bisa menggunakan $ id dari URL http://www.example.com/foo.php?id=42. Apakah on atau off, $ _GET [ 'id'] tersedia.

 Untuk rincian lebih lanjut tentang perubahan ini, lihat bagian pada variabel yang telah ditetapkan dan link di dalamnya.

 Apa berikutnya?

 Dengan pengetahuan baru Anda, Anda harus dapat memahami sebagian besar manual dan juga berbagai contoh skrip yang tersedia dalam contoh arsip blog saya.

Pengenalan PHP (Bagian I)

Apa itu PHP?

 PHP (singkatan rekursif PHP: Hypertext Preprocessor) adalah open source bahasa scripting tujuan umum banyak digunakan yang sangat cocok untuk pengembangan web dan dapat ditanamkan ke dalam HTML.

 Bagus, tapi apa artinya? Sebuah contoh:

 Contoh # 1 Contoh pengantar

 <! DOCTYPE HTML>
 <Html>
 <Head>
 <Title> Contoh </ title>
 </ Head>
 <Body>
 <? Php
 echo "Hi, aku script PHP!";
 ?>
 </ Body>
 </ Html>

 Alih-alih banyak perintah untuk output HTML (seperti terlihat dalam C atau Perl), halaman PHP mengandung HTML dengan kode tertanam yang melakukan "sesuatu" (dalam hal ini, output "Hai, aku script PHP!"). Kode PHP tertutup di awal dan pengolahan akhir special petunjuk <? Php dan?> Yang memungkinkan Anda untuk melompat ke dalam dan keluar dari "mode PHP."

 Yang membedakan PHP dari sesuatu seperti JavaScript sisi klien adalah bahwa kode dijalankan di server, menghasilkan HTML yang kemudian dikirim ke klien. Klien akan menerima hasil dari menjalankan script itu, tapi tidak akan tahu apa kode yang mendasari itu. Anda bahkan dapat mengkonfigurasi server web Anda untuk memproses semua file HTML Anda dengan PHP, dan kemudian ada benar-benar ada cara yang pengguna dapat memberitahu apa yang Anda miliki dibalik lengan baju Anda.

 Hal-hal terbaik dalam menggunakan PHP adalah bahwa hal ini sangat sederhana untuk pendatang baru, tapi menawarkan banyak fitur canggih untuk programmer profesional. Jangan takut membaca daftar panjang fitur PHP. Anda dapat melompat, dalam waktu singkat, dan mulai menulis script sederhana dalam beberapa jam.

 Meskipun pengembangan PHP difokuskan pada server-side scripting, Anda dapat melakukan lebih banyak lagi dengan itu. Membaca, dan melihat lebih dalam Apa yang bisa PHP lakukan? bagian, atau ke kanan ke tutorial pengantar jika Anda hanya tertarik dalam pemrograman web.

 Apa yang bisa PHP lakukan?

 Apa pun. PHP terutama difokuskan pada server-side scripting, sehingga Anda dapat melakukan apa saja program CGI lain dapat lakukan, seperti data formulir mengumpulkan, menghasilkan konten halaman dinamis, atau mengirim dan menerima cookies. Tapi PHP dapat melakukan lebih banyak lagi.

 Ada tiga bidang utama di mana skrip PHP yang digunakan.
◦ Server-side scripting. Ini adalah bidang target yang paling tradisional dan utama untuk PHP. Anda perlu tiga hal untuk membuat karya ini: parser PHP (CGI atau server module), web server dan web browser. Anda perlu menjalankan web server, dengan instalasi PHP yang terhubung. Anda dapat mengakses output program PHP dengan web browser, melihat halaman PHP tersebut. Semua ini dapat berjalan pada komputer rumah Anda jika Anda hanya bereksperimen dengan pemrograman PHP. Lihat bagian petunjuk instalasi untuk informasi lebih lanjut.
◦ Baris perintah scripting. Anda dapat membuat script PHP untuk menjalankannya tanpa server atau browser. Anda hanya perlu parser PHP untuk menggunakannya dengan cara ini. Jenis penggunaan sangat ideal untuk script teratur dieksekusi menggunakan cron (pada * nix atau Linux) atau Task Scheduler (pada Windows). Script ini juga dapat digunakan untuk tugas-tugas pengolahan teks sederhana. Lihat bagian tentang penggunaan baris perintah PHP untuk informasi lebih lanjut.
 aplikasi desktop Menulis ◦. PHP mungkin bukan bahasa terbaik untuk membuat aplikasi desktop dengan antarmuka pengguna grafis, tetapi jika Anda tahu PHP dengan sangat baik, dan ingin menggunakan beberapa fitur PHP maju dalam aplikasi client-side, Anda juga dapat menggunakan PHP-GTK untuk menulis program tersebut. Anda juga memiliki kemampuan untuk menulis aplikasi cross-platform dengan cara ini. PHP-GTK adalah ekstensi untuk PHP, tidak tersedia dalam distribusi utama. Jika Anda tertarik PHP-GTK, anda kunjungi websitenya sendiri.

 PHP dapat digunakan pada semua sistem operasi utama, termasuk Linux, banyak varian Unix (termasuk HP-UX, Solaris dan OpenBSD), Microsoft Windows, Mac OS X, RISC OS, dan mungkin orang lain. PHP juga mendukung untuk sebagian besar server web saat ini. Ini termasuk Apache, IIS, dan banyak lainnya. Dan ini termasuk web server yang dapat memanfaatkan biner FastCGI PHP, seperti lighttpd dan nginx. PHP bekerja baik sebagai modul, atau sebagai prosesor CGI.

 Jadi dengan PHP, Anda memiliki kebebasan untuk memilih sistem operasi dan web server. Selain itu, Anda juga memiliki pilihan untuk menggunakan pemrograman prosedural atau pemrograman berorientasi objek (OOP), atau campuran keduanya.

 Dengan PHP Anda tidak terbatas untuk output HTML. kemampuan PHP meliputi keluaran gambar, file PDF dan bahkan film Flash (menggunakan libswf dan Ming) yang dihasilkan dengan cepat. Anda juga dapat output dengan mudah teks, seperti XHTML dan file XML lainnya. PHP dapat autogenerate file-file ini, dan menyimpannya dalam sistem file, bukan pencetakan itu, membentuk cache server-side untuk konten dinamis.

 Salah satu fitur yang paling kuat dan signifikan dalam PHP adalah dukungan untuk berbagai database. Menulis sebuah halaman web database yang berkemampuan adalah sangat sederhana menggunakan salah satu ekstensi database tertentu (misalnya, untuk mysql), atau menggunakan lapisan abstraksi seperti PDO, atau menghubungkan ke database yang mendukung standar Open Koneksi Database melalui perpanjangan ODBC. database lain dapat memanfaatkan cURL atau soket, seperti CouchDB.

 PHP juga memiliki dukungan untuk berbicara dengan layanan lain menggunakan protokol seperti LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (pada Windows) dan banyak orang lain. Anda juga dapat membuka soket jaringan baku dan berinteraksi menggunakan protokol lainnya. PHP memiliki dukungan untuk WDDX pertukaran data yang kompleks antara hampir semua bahasa pemrograman web. Berbicara tentang interkoneksi, PHP memiliki dukungan untuk Instansiasi objek Java dan menggunakan mereka secara transparan sebagai objek PHP.

 PHP memiliki fitur pengolahan teks yang berguna, yang meliputi Perl ekspresi kompatibel biasa (PCRE), dan banyak ekstensi dan alat untuk mengurai dan mengakses dokumen XML. PHP standarisasi semua ekstensi XML pada dasar yang solid libxml2, dan memperpanjang set fitur menambahkan SimpleXML, XMLReader dan dukungan XMLWriter.

 Dan banyak ekstensi menarik lainnya ada, yang dikategorikan baik abjad dan berdasarkan kategori. Dan ada tambahan ekstensi PECL yang mungkin atau mungkin tidak didokumentasikan dalam manual PHP itu sendiri, seperti »XDebug.

 Apa yang saya butuhkan?

 Dalam tutorial ini kita asumsikan bahwa server Anda telah mengaktifkan dukungan untuk PHP dan bahwa semua file berekstensi .php akan ditangani oleh PHP. Pada kebanyakan server, ini adalah ekstensi default untuk file PHP, tetapi meminta administrator server Anda untuk memastikan. Jika server Anda mendukung PHP, maka Anda tidak perlu melakukan apa-apa. Hanya membuat file php Anda, menempatkan mereka dalam direktori web Anda dan server akan otomatis menguraikannya untuk Anda. Tidak perlu untuk mengkompilasi apa pun juga tidak Anda perlu menginstal alat tambahan. Pikirkan file PHP-enabled ini sebagai file HTML sederhana dengan keluarga baru dari tag ajaib yang memungkinkan Anda melakukan segala macam hal.

 Mari kita berkata Anda ingin menghemat bandwidth berharga dan mengembangkan secara lokal. Dalam hal ini, Anda akan ingin menginstal sebuah web server, seperti »Apache, dan tentu saja» PHP. Anda kemungkinan besar akan ingin menginstal database juga, seperti »MySQL.

 Halaman PHP-enabled pertama Anda

 Buat sebuah file bernama hello.php dan memasukkannya ke dalam direktori root web server Anda (DOCUMENT_ROOT) dengan konten berikut:

 Contoh # 1 skrip PHP pertama kami: hello.php

 <Html>
 <Head>
 <Title> PHP Uji </ title>
 </ Head>
 <Body>
 <? Php echo '<p> Hello World </ p>'; ?>
 </ Body>
 </ Html>

 Gunakan browser Anda untuk mengakses file dengan URL web server Anda, berakhir dengan file referensi /hello.php. Ketika mengembangkan secara lokal URL ini akan menjadi sesuatu seperti http: //localhost/hello.php atau http://127.0.0.1/hello.php tapi ini tergantung pada konfigurasi web server. Jika semuanya dikonfigurasi dengan benar, file ini akan diurai oleh PHP dan output berikut akan dikirim ke browser Anda:

 <Html>
 <Head>
 <Title> PHP Uji </ title>
 </ Head>
 <Body>
 <P> Hello World </ p>
 </ Body>
 </ Html>

 Program ini sangat sederhana dan Anda benar-benar tidak perlu menggunakan PHP untuk membuat halaman seperti ini. Semua hal ini adalah tampilan: Hello World menggunakan PHP pernyataan echo. Perhatikan bahwa file tidak perlu dieksekusi atau khusus dengan cara apapun. Server menemukan bahwa file ini perlu ditafsirkan oleh PHP karena Anda menggunakan ekstensi ".php", yang server dikonfigurasi untuk menyampaikan kepada PHP. Pikirkan ini sebagai file HTML biasa yang kebetulan memiliki satu set tag khusus yang tersedia untuk Anda yang melakukan banyak hal yang menarik.

 Jika Anda mencoba contoh ini dan itu tidak keluaran apa-apa, itu diminta untuk di-download, atau Anda melihat seluruh file sebagai teks, kemungkinan bahwa server Anda berada di tidak memiliki PHP diaktifkan, atau tidak dikonfigurasi dengan benar. Meminta administrator untuk mengaktifkannya untuk Anda menggunakan bab Instalasi manual. Jika Anda sedang mengembangkan secara lokal, juga membaca bab instalasi untuk memastikan semuanya dikonfigurasi dengan benar. Pastikan bahwa Anda mengakses file melalui http dengan server memberikan Anda output. Jika Anda hanya memanggil file dari sistem file Anda, maka tidak akan diurai oleh PHP. Jika masalah tetap saja, jangan ragu untuk menggunakan salah satu dari banyak »opsi dukungan PHP.

 Titik contoh adalah untuk menunjukkan khusus Format tag PHP. Dalam contoh ini kita menggunakan <? Php untuk menunjukkan awal dari tag PHP. Kemudian kita menempatkan pernyataan PHP dan modus PHP meninggalkan dengan menambahkan tag penutup,?>. Anda dapat melompat masuk dan keluar dari modus PHP dalam file HTML seperti ini di mana saja Anda inginkan. Untuk lebih jelasnya, baca bagian manual pada sintaks PHP dasar.

 Catatan: Catatan tentang Jalur Feed

 Jalur feed punya sedikit makna dalam HTML, namun masih merupakan ide yang baik untuk membuat HTML Anda terlihat bagus dan bersih dengan menempatkan garis feed di. Sebuah linefeed yang mengikuti segera setelah penutupan sebuah?> Akan dihapus oleh PHP. Hal ini dapat sangat berguna ketika Anda menempatkan dalam banyak blok PHP atau menyertakan file yang berisi PHP yang tidak seharusnya output apa-apa. Pada saat yang sama itu dapat sedikit membingungkan. Anda dapat menempatkan spasi setelah penutupan?> Untuk memaksa ruang dan feed line untuk menjadi output, atau Anda dapat menempatkan feed baris eksplisit dalam terakhir echo / print dari dalam blok PHP Anda.

 Catatan: Catatan tentang Editor Teks

 Ada banyak editor teks dan Integrated Development Environment (IDE) yang dapat Anda gunakan untuk membuat, mengedit dan mengelola file PHP.

 Catatan: Catatan tentang Pengolah Kata

 pengolah kata seperti StarOffice Writer, Microsoft Word dan Abiword tidak optimal untuk mengedit file PHP. Jika Anda ingin menggunakan satu untuk tes script ini, Anda harus memastikan bahwa Anda menyimpan file sebagai teks biasa atau PHP tidak akan dapat membaca dan mengeksekusi script.

 Catatan: Sebuah Catatan pada Windows Notepad

 Jika Anda menulis skrip PHP Anda menggunakan Windows Notepad, Anda akan perlu memastikan bahwa file Anda disimpan dengan ekstensi .php. (Notepad menambahkan ekstensi .txt ke file secara otomatis kecuali jika Anda mengambil salah satu langkah berikut untuk mencegahnya.) Ketika Anda menyimpan file dan diminta untuk memberikan nama untuk file, menempatkan nama file dalam tanda kutip (yaitu "hello.php "). Atau, Anda dapat klik pada menu drop-down 'Text Documents' di kotak dialog 'Save' dan mengubah pengaturan ke "All Files". Anda kemudian dapat memasukkan nama file Anda tanpa tanda kutip.

 Sekarang bahwa Anda telah berhasil membuat script PHP bekerja, sekarang saatnya untuk membuat script PHP yang paling terkenal! Membuat panggilan ke fungsi phpinfo () dan Anda akan melihat banyak informasi yang berguna tentang sistem anda dan setup seperti variabel yang tersedia yang telah ditetapkan, modul PHP dimuat, dan pengaturan konfigurasi. Luangkan waktu dan meninjau informasi penting ini.

 Contoh # 2 Dapatkan informasi sistem dari PHP

 <? Php phpinfo (); ?>