[Powered by Google Translate] [Minggu 8, Lanjutan]
[David J. Malan] [Harvard University]
[Ini adalah CS50.] [CS50.TV]
>> Ini adalah CS50, jadi ini adalah akhir dari Minggu 8 di sini.
Kami tentu memiliki sedikit badai awal pekan ini,
jadi sekarang itu benar-benar hanya kau dan aku di ruang kuliah,
tapi hari ini kita melanjutkan pembicaraan kita tentang PHP
dan tentang pemrograman web lebih umum, dan kami juga memperkenalkan ide
database, terutama satu disebut MySQL, yang cukup populer hari ini,
sebagian besar karena dari skalabilitas serta karena yang menjadi sumber bebas dan terbuka.
>> Tapi pertama-tama, melihat di mana kami tinggalkan terakhir kali.
Ingatlah bahwa kita cari di IM beberapa contoh Frosh,
dan ini adalah bentuk mengerikan yang saya datang dengan beberapa 15 + tahun yang lalu
dalam rangka untuk memiliki mahasiswa di kampus mendaftar untuk olahraga mahasiswa intramural
tanpa benar-benar harus perjalanan lagi melintasi halaman untuk Wigglesworth
untuk geser sepotong fisik kertas di bawah pintu beberapa pengawas itu.
Sebaliknya kami pindah segalanya secara online, tetapi untuk melakukan itu kita perlu memanfaatkan
dari beberapa teknologi, jadi satu, kami membutuhkan HTML, hypertext markup language,
yang sekali lagi merupakan bahasa markup dengan yang Anda membuat halaman web secara struktural.
>> Menggunakan sedikit CSS hari ini, cascading style sheets,
dimana kita menggunakan stilisasi dari halaman web menggunakan sintaks yang sedikit berbeda,
sedangkan HTML adalah semua tentang struktur daripadanya.
Kita juga perlu untuk memperkenalkan bahasa pemrograman web.
Dalam kasus ini, kita akan menggunakan PHP, dan PHP akan memungkinkan kita
konten keluaran dinamis serta melakukan hal-hal seperti program
mengirim email, seperti yang terjadi pada catatan kami meninggalkan pekan lalu.
>> Ingat bahwa kode untuk ini adalah dalam 2 bagian.
Satu, kami memiliki froshims3.php,
dan ini adalah sebagian besar markup dengan bentuk HTML di dalamnya,
sedikit kecil CSS di sini dalam gaya atribut
sehingga bentuk itu sendiri akan berpusat pada halaman, tapi di luar itu
kami memiliki beberapa masukan bentuk representatif, kolom teks, kotak centang,
beberapa tombol radio, menu pilih, dan tombol kirim.
Dan melalui formulir ini, kami ajukan ke sebuah file yang ternyata disebut register3.php,
yang itu sendiri tampak sedikit sesuatu seperti ini.
Sekarang, sebagian besar kode di register3.php, ingat, itu semua tentang email.
Itu sedikit validasi dari bentuk yang diajukan untuk memastikan
bahwa bidang yang benar-benar memberikan yang diharapkan.
Kemudian kami disebut beberapa fungsi PHP menggunakan sedikit sintaks baru,
meskipun itu dipinjam dari C.
>> Ini Operator panah memungkinkan kita untuk menggunakan sesuatu yang disebut pemrograman berorientasi obyek.
Kami tidak akan masuk ke bahwa dalam setiap rinci di sini, tapi tahu untuk saat ini
itu adalah cara memiliki fungsi yang terkait dengan benda-benda,
yang merupakan jenis khusus dari struktur, seperti yang kita lihat di C.
Tapi untuk saat ini, hanya mengambil pada iman bahwa ini adalah sintaks yang benar untuk menggunakan
ketika menggunakan perpustakaan seperti ini perpustakaan PHPMailer.
Dan kemudian pada akhir file ini kita telah dihasilkan secara dinamis email
yang harus dikirim ke akun saya jharvard@cs50.net
dari rekening jharvard@cs50.net saya,
dan kami diberitahu pengguna sesuai bahwa mereka telah terdaftar untuk olahraga ini.
Itu cukup banyak apa situs Frosh IM melakukan bertahun-tahun yang lalu
ketika saya menerapkannya, diberikan, dalam bahasa yang berbeda,
tapi itu menunjukkan Anda mungkin kekuatan yang Anda miliki
sekarang Anda dapat mengekspresikan diri tidak hanya pemrograman
pada tingkat yang rendah dalam bahasa seperti C tetapi pada tingkat yang lebih tinggi
dengan aplikasi dunia yang sangat nyata seperti email untuk benar-benar memecahkan
beberapa masalah dunia nyata.
>> Sekarang, tentu saja, meskipun saya menggunakan script ini untuk menghasilkan beberapa
email dinamis dari jharvard@cs50.net, yang memang account
bahwa saya memiliki akses ke, jangan sangat berhati-hati untuk mengirim
mengirimkan hanya dari account yang benar-benar Anda sendiri,
supaya hal membuat Anda dalam sedikit air panas dalam kehidupan.
Dengan mengatakan bahwa, mari kita sekarang transisi untuk memecahkan masalah yang berbeda sama sekali,
bahwa negara mempertahankan.
Sekarang, apa ini benar-benar berarti?
HTTP, protokol transfer hypertext ini,
sebenarnya adalah protokol stateless, dan apa artinya ini adalah bahwa
ketika Anda menarik sesuatu seperti Google.com dan kemudian tekan enter
Biasanya browser Anda memiliki beberapa jenis ikon berputar yang kemudian
Hasil dalam beberapa halaman web yang didownload,
dan kemudian bahwa ikon kecil berhenti berputar, dan bahwa memang menunjukkan
bahwa HTTP telah menyelesaikan beberapa jenis koneksi ke server dan hanya itu.
HTTP adalah stateless dalam arti bahwa ia tidak memelihara
koneksi secara persistent ke server di Skype cara yang sama tidak
atau GChat tidak karena dengan HTTP
asumsi adalah bahwa sekali Anda sudah mengambil sebuah halaman web itu saja.
>> Sekarang, pada kenyataannya hari ini di situs seperti Facebook dan Google Maps
dan Twitter dan sejenisnya ada dinamika lebih banyak dimana
bahkan setelah ikon yang berhenti berputar Anda sebenarnya bisa mendapatkan update lebih
dari server, more tweets, update status di Facebook lebih dan sejenisnya.
Tetapi bahkan yang menggunakan teknik yang akan kita bicarakan dalam satu atau dua minggu
dikenal sebagai Ajax menggunakan bahasa yang disebut JavaScript,
tapi pada akhir hari, HTTP masih berkewarganegaraan.
Namun jika Anda ingin entah bagaimana mengingat hal-hal tentang user
bahkan setelah mereka telah terputus dari server Anda
PHP tidak mampu Anda sarana untuk melakukan hal ini
karena, seperti yang kita lihat terakhir kali, PHP memiliki sejumlah superglobals,
dan superglobal adalah, sekali lagi, variabel global khusus
yang diberikan kepada Anda oleh server web dan oleh PHP itu sendiri.
>> Anda tidak perlu melakukan apapun untuk menempatkan nilai-nilai di dalamnya,
dan di antara superglobals kita lihat sejauh ini adalah mendapatkan dan posting,
yang mana kolom formulir diletakkan secara otomatis untuk Anda,
serta beberapa orang lain yang kita belum melihat belum.
Dalam $ _SERVER adalah beberapa variabel khusus yang berhubungan dengan server itu sendiri.
Apa alamat IP, apa protokol, HTTP atau HTTPS yang Anda gunakan,
apa metode permintaan yang Anda gunakan dan sejenisnya, jadi ada beberapa yang menarik,
berair rincian tentang server, dan pada kenyataannya, pengguna di sana juga.
Ada $ _COOKIE, yang mana hal-hal yang disebut cookie disimpan.
Kami tidak akan menghabiskan waktu pada cookies sendiri hari ini,
tapi tahu sekarang bahwa cookie hanyalah sepotong kecil informasi
bahwa server web dapat menanam pada browser web
dan pada gilirannya RAM atau hard drive komputer-nya
untuk menyimpan informasi tentang pengguna, misalnya, nama pengguna mereka
sehingga mereka tidak perlu mengetik setiap kali mereka masuk atau beberapa
unik nomor atau pengidentifikasi untuk pengguna yang
sehingga Anda tidak perlu mengganggu mereka dengan jenis yang sama pertanyaan tentang
preferensi di masa depan, namun yang paling menarik
sekarang adalah $ _SESSION.
>> Ini superglobal, yang, seperti yang lain, diserahkan kepada Anda secara otomatis oleh PHP
ketika Anda sedang menulis PHP berbasis website
dapat menyimpan apa pun yang Anda inginkan, string, integer,
floating point, nilai-nilai, array, objek,
benar-benar apa pun yang Anda inginkan, dan memungkinkan Anda untuk menyimpannya dalam sedemikian rupa
bahwa bahkan jika pengguna mengunjungi Anda sekarang dan kemudian
datang kembali satu menit dari sekarang atau 5 menit dari sekarang karena
mereka mengambil waktu mereka sebelum mengklik beberapa link lainnya
PHP akan memastikan bahwa apa pun yang Anda dimasukkan ke dalam sesi superglobal
beberapa menit menit atau 5 lalu masih akan berada di sana ketika kembali pengguna.
Dan di bawah kap superglobal ini dilakukan dengan cara
hal-hal yang disebut cookie, tetapi untuk sekarang, itu hanya sebuah abstraksi
dimana itu semacam program setara dari keranjang belanja.
Apa pun yang Anda, programmer, dimasukkan ke dalam
array asosiatif superglobal akan ada beberapa jumlah menit kemudian
sampai Anda menghapusnya atau sampai pengguna berhenti peramban nya sama sekali.
>> Mari kita lihat sebuah contoh bagaimana hal ini benar-benar digunakan.
Dalam counter.php antara potongan saat ini kode
kita memiliki baris berikut.
Pada awal file ini kita memiliki banyak komentar biru, yang menarik untuk saat ini.
Tapi di baris 13 kita memiliki baris baru,
session_start, dan yang benar-benar melakukan persis apa yang dikatakannya.
Dimulai sesi.
Hal ini memungkinkan Anda untuk menggunakan superglobal besar $ _SESSION, dan itu sesederhana itu.
Sekarang, jika kita melanjutkan untuk melihat baris 16, mari kita coba untuk mencari tahu apa halaman web yang akan dilakukan.
If (isset ($ _SESSION ["kontra"]) kemudian pergi ke depan
dan simpan dalam variabel counter, counter kecil,
$ _SESSION ["Kontra"].
Hal ini tampaknya akan mendeklarasikan sebuah variabel lokal yang disebut kontra
yang di dalamnya itu menempatkan salinan apa saja yang dalam dari superglobal
disebut sesi di lokasi "kontra."
Lain, rupanya, ini variabel counter kecil lokal, diinisialisasi ke 0.
>> Tapi kemudian beberapa baris kemudian pada 26 pemberitahuan bahwa salinan sesi counter,
kuncinya, memiliki ditugaskan nilai baru yang merupakan nilai saat ini ditambah 1.
Singkatnya, file ini tampaknya akan memperbarui
counter yang disimpan dalam dari superglobal sesi
dengan incrementing dengan 1, tetapi pertama kali mempertahankan salinan dari nilai sebelumnya
dengan menyimpan dalam sebuah variabel lokal yang disebut $ counter,
dan kemudian turun di sini mari kita lihat apa yang tersisa.
Ternyata itu cukup banyak hanya HTML.
Di bagian bawah halaman ini kita lihat di baris 37 yang saya telah mengunjungi situs ini
Jumlah counter kali, jadi ada beberapa fitur yang menarik di sini.
Satu, ini jelas variabel, tetapi tidak cukup untuk hanya menempatkan
$ Counter di tubuh HTML Anda karena tentu saja
apakah itu hanya ada di kalangan PHP HTML Anda akan berasumsi bahwa hanya HTML.
Anda benar-benar ingin $ counter yang akan dicetak di layar.
>> Tapi bukannya dengan menjatuhkan ke mode PHP
dengan ini bagian dari sintaks kita dinamis dapat memasukkan nilai di sini
sangat mirip dalam semangat untuk apa yang kami lakukan terakhir kali dengan
memasukkan nilai-nilai ke string.
Pada kenyataannya, ini hanyalah sebuah notasi singkat untuk mengatakan sesuatu seperti ini secara harfiah,
print ($ counter) atau bahkan sesuatu seperti printf (% s, counter),
atau bahkan, karena Anda mungkin telah melihat secara online atau di buku-buku pelajaran,
ada fungsi di PHP disebut gema
yang melakukan hal yang sama, dan semua dari mereka adalah cara hanya lebih lama tele
mengatakan <=.?
Dalam hal ini yang Anda tidak perlu menempatkan
PHP kata setelah tanda tanya.
Ini adalah notasi singkat untuk, sekali lagi, apa yang kita hanya melihat beberapa saat yang lalu
yang bergema beberapa nilai.
>> Mari kita lihat apa hasil akhir dari ini sebenarnya.
Biarkan aku pergi lebih ke dalam file counter.php kami,
dan kita akan melihat bahwa David hanya membuat kesalahan dengan bermain dengan kode di sana.
Mari kita memperbaiki apa pun kacau,
dan kesalahan tampaknya berada di sana, pergi, on line 37.
Menurut bagian atas halaman ini saya telah mengunjungi situs ini 0 kali.
Nah, mari kita pergi ke depan sekarang, dan di bagian atas browser klik pada
ulang ikon, dan saya klik ulang,
dan sekarang saya sudah mengunjungi situs 1 kali, 2, 3, 4, 5, 6, 7, 8.
Dan memang, jika kita melihat sumber halaman ini kode sumber yang sebenarnya berubah,
dan perhatikan adanya lengkap PHP apapun, dan itu karena
Kode PHP dievaluasi atau ditafsirkan sisi server,
dan sehingga berarti bahwa output dari script PHP adalah apa yang akhirnya dikirim ke browser,
yang dalam hal ini adalah beberapa HTML mentah dan beberapa teks baku.
Apa yang terjadi di sini?
>> Nah, dengan garis relatif sedikit kode saya bisa menyimpan
terus-menerus selama beberapa detik, atau jika kita menunggu cukup lama,
menit, bahkan jam, beberapa nilai dengan cara yang membuat HTTP
tampak stateful seolah-olah kita telah ditahan
ini koneksi ke server, dan itu hanya mengingat apa yang saya katakan terakhir kali,
tetapi dalam kenyataannya ada sejumlah besar kompleksitas terjadi di bawah tenda
melibatkan cookie yang memungkinkan PHP untuk memberikan ilusi ini
ini keranjang belanja-seperti fitur.
Untuk saat ini, contoh sepele di mana kami hanya menyimpan integer,
namun fitur yang akan datang kembali untuk menjadi nilai yang besar
ketika kita mulai berbicara tentang proyek yang lebih kompleks,
di antaranya masalah set 7.
Ini adalah masalah Anda yang terakhir diatur dalam CS50.
Aku tahu, itu sangat menyedihkan, tapi apa yang akan Anda temukan adalah bahwa kita akan menyimpulkan
ini bagian dari semester dengan benar-benar transisi
dari konteks C tentu dengan konteks PHP
tapi sementara menggunakan beberapa dasar-dasar yang sama
kita bicarakan untuk beberapa waktu.
>> Tujuan dengan pset 7 adalah untuk menerapkan CS50 Keuangan,
yang merupakan versi Anda sendiri dari Yahoo Finance atau Google Finance
atau bahkan Etrade.com dimana Anda memiliki kemampuan untuk
mencari harga saham untuk simbol yang diberikan, tapi bahkan lebih dari itu
Anda memiliki kemampuan untuk "membeli" dan "menjual" saham
yang diperdagangkan di bursa efek berbagai sebab seperti ini home page
di sini menunjukkan, yang benar-benar sejauh mana kita sudah mulai
sejumlah masalah bagi Anda, Anda memiliki form login yang meminta nama pengguna dan password.
Ini memiliki tombol kirim, tapi setelah itu, seperti yang kita akhirnya akan melihat,
tidak ada yang benar-benar terjadi di bawah kap namun karena
tetap bagi Anda untuk menerapkan kemampuan untuk mendaftarkan pengguna baru,
kemampuan untuk membeli saham, untuk menjual saham,
untuk benar-benar mencari harga saham saat ini.
>> Dan memang, ini akan menjadi seperti dunia nyata mungkin karena kita lakukan
termasuk sedikit kode yang akan memungkinkan Anda dengan fungsi tunggal
untuk query Yahoo Finance, yang luar biasa membuat data gratis yang tersedia
untuk mencari harga saham berdasarkan simbol saham atau simbol ticker,
dan Anda mendapatkan kembali harga saham saat hari.
Data yang Anda benar-benar melihat dalam pset tertentu akan
sekitar sebagai dunia nyata karena bisa mendapatkan sehingga Anda benar-benar interfacing
dengan saham dunia nyata, harga dunia nyata,
dan kita akan melihat berapa banyak uang yang Anda dapat membuat mungkin
selama beberapa hari berikutnya bermain dengan sejumlah masalah Anda sendiri.
>> Tapi mari kita pertama kali mengatur panggung untuk bagaimana merancang sesuatu yang tentu lebih rumit
dibandingkan counter.php, itu lebih rumit daripada contoh IM Frosh sejauh ini,
dan mari kita mencoba untuk memperkenalkan paradigma beberapa di sini yang memungkinkan kita
baik untuk pset 7 dan mungkin untuk proyek akhir Anda jika Anda melakukan sesuatu yang didasarkan web
untuk menjaga kode Anda terorganisir dengan baik, untuk menjaga diri waras,
dan untuk mengambil langkah menuju berkolaborasi, baik dalam tugas akhir ini CS50
atau di luar jika Anda terus memprogram sesuatu di masa depan.
Ada paradigma desain umum
dalam ilmu komputer dan dalam pengembangan perangkat lunak lebih umum
dikenal sebagai MVC, model view controller,
dan ini adalah singkatan konyol yang menggambarkan ide yang sangat bagus,
yang merupakan pemisahan dari aspek yang berbeda dari sebuah program,
khusus menjaga memisahkan logika atau logika bisnis dari sebuah situs web
sehingga apa pun yang melibatkan hal-hal seperti
memanggil fungsi dan query database dan sejenisnya
terjadi bukan antara HTML Anda
melainkan dalam file terpisah, dan memang, ada satu file ini
biasanya yang sudah Anda panggil controller
itu benar-benar otak di balik operasi, dan kita akan melihat contoh
ini hanya dalam beberapa saat.
>> Ada sebuah model yang pemrograman kode
yang melakukan berbicara dengan database Anda, yang berbicara ke Yahoo Finance dan sejenisnya,
dan kemudian ada V di MVC, pandangan,
semua barang-barang yang berkaitan dengan estetika, file yang sebenarnya mengandung
HTML, CSS mungkin Anda dan sejenisnya.
Idenya di sini, karena gambar ini menunjukkan, adalah bahwa controller
adalah file, seperti yang kita akan segera melihat dan seperti yang Anda terutama akan melihat di pset 7,
bahwa dunia berbicara kepada melalui browser web mereka.
Itu adalah file yang akan dikunjungi di internet publik,
tapi controller berbicara kepada berpotensi model,
yang merupakan salah satu atau lebih file lain yang berisi kode yang berhubungan dengan data,
kode yang terkait dengan database dan sejenisnya, dan kemudian berbicara kepada
controller satu atau lebih file lain yang dikenal sebagai pandangan,
yang merupakan estetika dari suatu halaman web, template macam,
yang mungkin mengambil beberapa data sebagai masukan, tapi pada akhir hari
satu-satunya logika dalam pandangan harus render data,
iterasi loop dan benar-benar menyemburkan beberapa
HTML berbasis rendition daripadanya atau bahkan sesuatu seperti PDF.
>> Apa yang baik tentang MVC adalah bahwa Anda dapat memiliki pandangan yang berbeda
berdasarkan jenis perangkat, berdasarkan pada jenis format file yang Anda benar-benar
ingin menunjukkan kepada pengguna.
Mari kita lihat beberapa contoh semakin lebih kompleks dan dirancang dengan baik beberapa
dengan memulai pertama dengan versi 0 di sini.
Biarkan aku pergi ke depan dan membuka di direktori MVC kami hari ini
file bernama index.php dalam direktori 0.
Perhatikan ini adalah situs yang sederhana dan sangat underwhelming Super
itu semacam versi 0 dari homepage untuk CS50,
dan perhatikan bagaimana kita memiliki link ke Kuliah, kami memiliki link ke Silabus,
dan jika saya mengikuti link ke pemberitahuan Kuliah bahwa URL
bagian atas akan berubah menjadi lectures.php.
Jika saya kemudian ikuti link ke Minggu 1 pemberitahuan bahwa perubahan URL untuk week1.php.
Sepertinya ada struktur hirarkis yang cukup sederhana di sini.
>> Mari kita lihat di bawah kap di bagaimana hal ini ditata,
dan memang, jika saya melihat index.php itu cukup sederhana.
Pada kenyataannya, meskipun saya disebut ini file PHP ada kode pemrograman yang sebenarnya.
Ada komentar yang saya tulis di sini di PHP hanya jadi pengguna tidak berakhir melihatnya.
Tentu saja, seperti sebelumnya, apa yang ada di antara tag PHP
akan ditafsirkan, bahkan jika itu komentar, dan untuk menginterpretasikan komentar
berarti hanya untuk membuangnya di akhir hari dan tidak benar-benar
mengirimkannya ke browser, jadi semuanya di sini hanya estetika.
Jika saya membuka lectures.php sama ini juga hanya sebuah file kode keras.
Hal ini terjadi untuk disebut sesuatu. Php,
tapi itu benar-benar hanya. html, dan week1.php, week2.php
sama hanya markup, sehingga ada sekelompok kekurangan dari desain ini.
Satu, itu sejumlah besar copy / paste.
Meskipun satu-satunya hal yang berubah di antara file-file ini adalah daftar unordered,
tag li, saya tetap memiliki tipe doc, HTML, kepala,
judul, tubuh dekat, dekat HTML dan lebih
dalam setiap file tunggal, yang berarti bahwa jika saya pernah ingin merestrukturisasi
ini halaman web atau restylize itu aku harus masuk dan mengubah
semua file secara manual atau dengan beberapa besar mencari dan mengganti.
>> Mari kita mengambil langkah menuju desain lebih cerdas, lebih lama berpikir dalam versi 1 di sini
dimana sesuai saya baca bahwa kami telah disertakan sehingga Anda dapat bermain bersama dengan
ini lebih santai dalam waktu rumah yang kita miliki di sini
ringkasan dari file dalam versi 1 dari situs ini,
dan tampaknya bahwa saya telah mengambil itu atas diri untuk faktor luar
beberapa kode umum, header.php dan footer.php.
Nah, mari kita lihat apa yang ada di dalam pertama mereka.
Header.php tampak akrab,
tapi perhatikan mana itu bisa dipotong?
Tepat setelah baris 19, jadi itu semua yang umum
dari file index.php, lectures.php,
week1 dan week2.php dari contoh sebelumnya.
Apa yang saya lakukan adalah copy dan segala cut yang umum untuk semua file,
memasukkannya ke dalam sebuah file header yang terpisah, dan juga di footer.php
aku menerapkan prinsip yang sama dimana hanya menarik garis
di footer.php adalah tubuh ini, dua dekat dan HTML dekat.
>> Tapi apa ini berarti sekarang adalah bahwa dalam versi baru
pemberitahuan index.php berapa banyak sederhana itu bisa mendapatkan.
Memang, sedikit lebih samar mencari, sedikit kurang intuitif
untuk mengikuti atas ke bawah, tapi Allahku, semua redundansi yang sekarang hilang.
Kami memerlukan menggunakan fungsi PHP harfiah disebut membutuhkan sampai atas,
yang sangat mengingatkan, ingat, dari C # include mekanisme.
Kami memerlukan header.php di bagian atas.
Kami memerlukan footer.php di bagian bawah, dan satu-satunya yang berbeda
atau khusus tentang file ini adalah konten yang dimaksudkan untuk menjadi unik untuk itu.
Jika saya kemudian masuk ke dalam, katakanlah, lectures.php, prinsip yang sama berlaku.
Sekali lagi, beberapa komentar di bagian atas, tapi kemudian saya memerlukan header, footer membutuhkan,
dan di antara itu hanya konten yang benar-benar berubah.
Dan jika kita melihat ke Minggu 1 Minggu 2 dan kita akan melihat
bahwa prinsip yang sama telah diterapkan di sana.
Nah, kita tidak cukup dilakukan di sana.
>> Mari kita lihat versi 2, yang memiliki struktur yang sama,
tapi perhatikan sekarang aku sudah memperkenalkan sesuatu yang lain.
Sejalan 10 Saya sudah diperkenalkan helpers.php,
yang tampaknya mengandung fungsi pembantu.
Sebuah fungsi pembantu umumnya fungsi yang relatif singkat
bahwa Anda menulis untuk membantu Anda keluar di berbagai tempat,
dan mari kita lihat apa yang ada dalam helpers.php.
Dalam kasus ini, sepertinya memiliki 2 fungsi.
Ingat dari hari lainnya dengan contoh kubus kami
Anda dapat mendefinisikan fungsi Anda sendiri dalam PHP, dan apa yang saya lakukan sekarang adalah saya sudah
fungsi didefinisikan disebut membuat footer dan membuat header,
yang pertama mengambil parameter yang disebut data,
nilai default yang adalah array kosong, seperti yang disarankan di sana,
dan kita benar-benar bisa menulis ini bahkan lebih ringkas dalam versi terbaru dari PHP
dengan mengatakan braket persegi terbuka, tertutup braket persegi.
Itu berarti array kosong ukuran 0 tetapi tetap array.
>> Fungsi Ekstrak sedikit khusus dalam
apa yang dilakukannya adalah dibutuhkan sebagai argumen array asosiatif
yang memiliki 0 atau lebih pasangan nilai kunci, dan jika Anda memiliki kunci foo
dan nilai bar fungsi ekstrak
menciptakan situasi di mana sekarang, pada baris 11,
Anda memiliki variabel lokal bernama $ foo yang nilainya bar.
Dan jika Anda memiliki kunci lebih dan nilai-nilai dalam array data,
sama akan mereka diekstraksi ke dalam lingkup lokal
atau ruang nama sehingga footer.php dan
ide yang sama di sini, sehingga header.php
memiliki akses ke variabel tersebut.
Bahkan, biarkan aku membuka lagi header.php
dan menarik perhatian sekarang apa yang tampak seperti di versi ini.
>> Daripada hard coding CS50 sebagai judul untuk setiap halaman
melihat dinamika yang mungkin sekarang.
Sejalan 5 Saya bergema variabel judul,
tapi pertama-tama saya melewati variabel judul untuk fungsi yang disebut htmlspecialchars.
Sebuah nama bodoh untuk fungsi, selama itu, tapi itu benar-benar melakukan apa yang dikatakannya.
Ini memastikan bahwa setiap karakter khusus
dalam string yang telah disahkan pada benar lolos HTML.
Ini sebenarnya adalah cara untuk menghindari sesuatu yang disebut serangan scripting lintas situs
dimana seseorang bisa jahat atau sengaja
menyuntikkan HTML mereka sendiri ke situs web Anda
dengan menyisipkan ke dalam beberapa bentuk, misalnya,
sesuatu yang Anda tidak cukup mengharapkan, terutama kode JavaScript,
seperti yang akan kita bicarakan dalam seminggu atau waktu dua itu.
>> Ini header.php sekarang, itu pandangan
dalam arti bahwa hal itu memungkinkan Anda untuk melihat estetis isi dari beberapa kumpulan data.
Tapi yang lebih spesifik, itu template.
Ini adalah semacam cetak biru sekarang dari apa yang kita inginkan header dari setiap halaman untuk terlihat seperti,
tapi ada beberapa dinamika dalam bahwa kita ingin judul untuk secara dinamis dimasukkan
berdasarkan variabel judul
yang diekstrak ketika kita dipanggil, lagi,
fungsi render header.
Sekarang, jika kita melihat footer render, sebenarnya ada tidak banyak menggunakan itu sekarang
karena di footer.php ada dinamika apapun.
Mungkin ada, tetapi pada saat itu adalah daftar kode keras dari 2 tag,
tapi ide yang sama berlaku, sehingga yang benar-benar menunjukkan mengapa
Apakah kita buang waktu memiliki header render dan fungsi render footer?
Biarkan aku pergi bukan sekarang ke versi 3,
dan dalam versi 3 di pembantu saya memutuskan untuk menyederhanakan bahkan lebih.
>> Biarkan aku memiliki satu fungsi render.
Biarkan aku memilikinya mengambil argumen lain, kali ini disebut template,
yang dimaksudkan untuk menjadi nama template,
dan kemudian saya akan menggabungkan terlalu berani php untuk nilai yang variabel.,
dan kemudian jika ada foo.php, bar.php atau header.php dan footer.php,
maka aku akan pergi ke depan dan ekstrak data variabel
dan kemudian memerlukan jalan itu.
Dengan kata lain, untuk menggunakan ini sekarang, jika saya membuka index.php
perhatikan bahwa saya tidak menyebut sundulan render lagi.
Aku hanya memanggil render, tapi saya lulus dalam nilai dikutip dari header
untuk membuat jelas template yang saya benar-benar ingin memuat.
>> Kemudian di sini melihat apa yang saya lakukan.
Saya lewat di dinamis kunci dari judul,
nilai CS50, dan ini juga, seperti yang kita lihat sebelumnya,
bisa dibuat lebih ringkas dalam versi terbaru dari PHP
di mana saya bisa menggantikan fungsi array dengan tanda kurung siku,
yang saya usulkan adalah lebih mudah dibaca dan tentu
sedikit lebih mudah untuk mengetik.
Dan tentu saja, dengan panggilan render footer di bagian bawah,
kita tidak repot-repot lewat di suatu argumen kedua sama sekali, tidak ada array asosiatif,
karena tidak ada di dalam dinamis footer itu.
Ini hanya beberapa tag dekat untuk HTML.
Baik, kita mengambil langkah-langkah menuju benar-benar membersihkan semuanya di sini,
tapi biarkan aku membuka 2 contoh akhir.
Ini satu, nomor 4, perhatikan bahwa saya telah membuat keputusan sadar sekarang
untuk memperbaiki contoh sebelumnya dengan menggunakan hirarki akhirnya beberapa file saya.
>> Perhatikan bahwa dalam ringkasan ini, dalam hal ini saya membaca, saya sudah diperkenalkan
yang termasuk direktori dan direktori template
Isi yang akan menjadi hal-hal yang saya ingin memasukkan
dan template yang saya ingin membuat masing-masing.
Ini benar-benar saya menjadi anal dan mencoba untuk menjaga hal-hal rapi,
menyimpan file-file terkait bersama-sama, tetapi hasil akhirnya
adalah bahwa kita sekarang memiliki setup yang sedikit lebih rapi, tapi kita harus ingat sekarang
dalam, misalnya, index.php
ketika kita membutuhkan berkas helpers.php
kita harus sekarang memerlukan via includes / helpers.php
bukan hanya mengatakan helpers.php karena sekarang itu sebenarnya dalam sub direktori.
Sekarang, sebagai samping, Anda akan melihat dalam contoh dan beberapa orang lain
fungsi seperti membutuhkan, membutuhkan sekali.
Ada sebenarnya fungsi itu sendiri disebut meliputi, dan mereka semua memiliki perilaku yang sedikit berbeda.
Di sini saya katakan membutuhkan sekali untuk membuat super jelas bahwa saya hanya ingin orang-orang
pembantu termasuk dalam proyek saya sekali.
Tapi kalau aku berhati-hati dan jika aku benar-benar berpikir melalui logika saya benar
itu harus cukup juga hanya untuk mengatakan membutuhkan sampai atas
asalkan saya sendiri tidak sengaja mengharuskan file yang sama di tempat lain.
Pada kenyataannya, ini adalah cara yang lebih efisien dalam melakukan sesuatu kemudian menggunakan
membutuhkan sekali, jadi saya akan memotongnya menjadi hanya membutuhkan.
>> Mari kita mengambil satu langkah lebih jauh.
Contoh terakhir ini sekarang, versi 5, memiliki hirarki folder bahkan lebih bersih.
Perhatikan apa yang saya lakukan di sini per saya baca dalam versi final
sekarang saya memiliki direktori HTML saya, yang saya punya selama ini,
namun dalam sana sekarang hanya index.php, lectures.php,
week1.php dan week2.php.
Termasuk direktori sekarang tinggal bersama dari direktori HTML,
sehingga pada tingkat yang sama seperti saudara kandung, sehingga untuk berbicara.
Begitu pula folder template.
Takeaway kunci di sini adalah saya telah memperkenalkan struktur sedikit lebih,
tetapi fitur utama sekarang adalah bahwa hanya file
yang perlu web diakses, publik dialamatkan
oleh URL di internet publik dalam direktori HTML saya.
>> Sementara itu, file lainnya, helpers.php, footer.php,
header.php, yang bisa dibilang mungkin lebih sensitif,
mungkin pembantu sebenarnya memiliki nama pengguna dan password beberapa atau beberapa intelektual
milik saya, fungsi aku benar-benar tidak ingin dunia untuk melihat, bahkan jika tidak sengaja.
Ini praktik yang baik untuk menjaga keluar dari direktori HTML publik
setiap file yang tidak perlu diri menjadi publik.
Semua harus Anda lakukan dalam hal ini ketika melihat, misalnya,
direktori HTML file index.php,
perhatikan kita hanya harus sedikit lebih berhati-hati saat membutuhkan
atau memerlukan sekali file ini.
Saya harus terlebih dahulu lakukan .. untuk pergi ke direktori induk,
kemudian melakukan / includes / helpers.php
menyelam kembali ke dalam untuk mendapatkan file yang saya peduli.
>> Setiap pertanyaan kemudian pada MVC
atau inkarnasi ini relatif sederhana daripadanya?
Dan biarkan aku membuat jelas bahwa kita fokus cukup sedikit di
V di sini, pandangan dan anjak keluar dari template ini.
Kami sudah tidak benar-benar dibedakan M dari C dulu.
Bahkan, ada benar-benar ada di sini M, dan bahkan C kami,
controller, tidak benar-benar melakukan semua yang banyak, tetapi Anda akan mendapatkan lebih banyak
akrab dengan kedua dari mereka 2 surat dari MVC,
atau lebih tepatnya, Anda akan mendapatkan jauh lebih akrab dengan C
di MVC untuk mengatur, masalah 7 jadi ada lebih dari itu di cakrawala.
Pertanyaan?
Sebenarnya tidak ada seorang pun di sini.
>> Oke, mari kita sekarang beralih ke topik kedua dan terakhir untuk hari ini.
Itu adalah pengenalan database.
Sampai titik ini kita sudah memiliki beberapa cara untuk menyimpan data.
Kami telah menggunakan variabel.
Kembali dalam file C kami, I / O diskusi kami mulai menggunakan file teks
dan menggunakan file seperti fprintf, dan kemudian kita bahkan mulai
berbicara tentang CSV file sedikit, nilai dipisahkan koma,
sehingga semua ini memungkinkan kita untuk memiliki data yang tersimpan
baik non-terus-menerus atau persisten.
Tetapi bahkan CSVs tidak benar-benar kondusif untuk mencari
dan memasukkan dan menghapus.
Ini benar-benar hanya sebuah file teks bodoh dipisahkan oleh koma
baris demi baris demi baris demi baris, jadi jika Anda ingin
mencari file yang terbaik yang dapat Anda lakukan benar-benar adalah pencarian linear.
Anda harus mulai di bagian atas file, membaca semuanya dalam,
dan mencari beberapa nilai bunga.
Jika Anda ingin memasukkan ke dalamnya Anda harus melakukan hal yang sama,
iterasi di atasnya dan memasukkan di tempat tertentu,
dan pada kenyataannya, Anda harus melakukan semua logika mencari sendiri.
>> Anda tidak bisa melakukan pola pintar pencocokan pada file CSV kecuali Anda sendiri menulis kode.
Anda tidak dapat melakukan filtrasi dari file CSV
kecuali Anda sendiri menulis kode.
Bukankah lebih baik jika orang lain dimasukkan ke dalam semua upaya
untuk benar-benar membuat pencarian mudah dan penyisipan mudah
dan penghapusan dan memperbarui dan sebagainya?
Itulah yang database adalah.
SQL, bahasa query terstruktur, belum bahasa lain
bahwa kita memperkenalkan di sini hari ini, tapi ini juga cukup diakses,
dan apa yang kita benar-benar akan lakukan hanya memetik dari itu beberapa yang paling menonjol
karakteristik sehingga untuk pset 7, dan jika Anda melakukan sesuatu yang didasarkan web,
tugas akhir Anda, Anda memiliki kemampuan untuk mengekspresikan diri
dalam hal permintaan data.
Anda memiliki kemampuan untuk menyimpan sedikit atau banyak data
dalam cara yang jauh lebih terstruktur yang akan pada akhir hari
membuat hidup Anda lebih mudah karena dengan SQL Anda dapat mengekspresikan diri
lebih tepatnya, jauh lebih metodis untuk
mendapatkan kembali beberapa subset dari data dari corpus yang lebih besar dari data.
>> Anda dapat memikirkan database, dalam hal ini, sebuah database SQL, benar-benar seperti Excel
Bilangan atau di mana itu spreadsheet,
atau mungkin beberapa spreadsheet, dan spreadsheet, tentu saja,
memiliki baris dan kolom, dan itu karena
Database SQL relasional, relasional dalam arti
bahwa mereka menyimpan data dalam hal ini tabel,
baris dan kolom.
Mereka berkinerja tinggi daripada sesuatu seperti spreadsheet,
dan spreadsheet dimaksudkan untuk digunakan oleh manusia.
Sebuah database dimaksudkan untuk digunakan oleh programmer
menulis kode menentangnya, sehingga inkarnasi database
akan menjadi salah satu baris perintah.
>> Salah satu database relasional yang paling populer di luar sana, sekali lagi, MySQL,
yang luar biasa bebas, berkinerja sangat tinggi, dan ini adalah apa yang
Facebook digunakan sangat awal dan sampai batas tertentu masih hari ini
untuk menyimpan banyak data, dan kita akan lihat sebentar lagi
yang menggunakan perintah yang relatif sederhana
kita dapat memilih data, data insert, update data,
menghapus data dan sejenisnya, tapi untungnya, ada antarmuka yang lebih user-friendly
dari sekedar mengetik di prompt hitam dan putih di sini.
Kami akan gunakan untuk pset 7 dan seterusnya perangkat gratis yang disebut phpMyAdmin.
Nama ini kebetulan.
Alat ini terjadi untuk diterapkan di PHP,
tapi itu tidak relevan fundamental.
Apa yang berguna tentang phpMyAdmin adalah bahwa itu adalah utilitas berbasis web.
Kami telah pra-instal dalam alat untuk Anda,
dan dengan itu Anda dapat membuat tabel dalam database,
Anda dapat memasukkan data, menghapus data, dan umumnya melihat
Anda data dalam lingkungan yang cukup user-friendly.
Pengguna Anda tidak akan menggunakan phpMyAdmin.
>> Ini benar-benar hanya alat administratif atau pengembang
yang dapat digunakan untuk melihat dan melihat-data Anda dan mencari tahu bagaimana struktur itu,
seperti Anda sendiri mungkin menggunakan Excel atau Numbers,
tapi itu akan menjadi cara yang bagus untuk memvisualisasikan apa yang terjadi di bawah tenda
sehingga Anda dapat fokus pada pemecahan masalah yang menarik dan tidak begitu banyak
pada perintah misterius.
Mari kita lihat contoh data yang akan disimpan tabularly
dalam database relasional.
Berikut ini salah satu contohnya.
Sekarang, sayangnya, phpMyAdmin keliru di sisi dari cara melempar terlalu banyak kata
dan grafis pada Anda, tetapi jika Anda mengasah dalam hanya pada
ID kolom, kolom nama pengguna, dan kolom hash,
ini efektif spreadsheet, tetapi hal itu terjadi menjadi potongan
dari meja di dalam alat
menggunakan file yang kami menyediakan Anda dengan sejumlah masalah dalam 7.
>> Secara khusus, kami memberikan Anda sebuah file yang mewakili
pengguna meja, sehingga spreadsheet yang berisi pengguna dengan 3 kolom,
salah satunya adalah ID unik mulai dari 1 dan menjadi bertambah setelahnya.
Kolom kedua adalah nama pengguna, dan anda yang melakukan Hacker,
edisi Hacker untuk pset 2, mungkin mengenali beberapa dari nama-nama pengguna setidaknya.
Di sisi kanan adalah password, tapi mereka tidak password literal.
Mereka hash daripadanya, jadi ternyata
yang menyimpan password dalam database adalah ide yang sangat buruk.
Kalian semua mungkin membaca di beberapa titik beberapa website
atau database beberapa perusahaan terganggu, dan kemudian Anda harus
mengubah sandi Anda, Anda perlu untuk mendapatkan pengembalian uang pada hal-hal
karena beberapa orang jahat justru masuk ke akun Anda sebagai hasilnya.
>> Menyimpan password dalam teks yang jelas, tidak terenkripsi dalam database
benar-benar bodoh, namun itu sangat lucu
kemudian membaca tentang beberapa perusahaan yang sangat terkenal
kadang-kadang dalam pers database yang terganggu,
dan bagian yang tidak lucu, tapi fakta bahwa database mengandung terenkripsi
password konyol karena secara harfiah dengan satu baris kode
Anda dapat melindungi terhadap bahwa ancaman tertentu, dan itulah yang kami lakukan di sini.
Bahkan untuk palsu sedikit versi kita CS50 Keuangan
kami mengenkripsi password hanya untuk mengukur baik, dan fakta bahwa
semua password mulai dengan $ 1 $ hanyalah konvensi.
Itu hanya berarti mereka dienkripsi atau benar-benar hashed,
yang seperti fungsi enkripsi satu arah
dimana Anda tidak dapat membalikkan efek dengan sesuatu yang disebut MD5.
>> Fakta bahwa 50 adalah setelah itu berarti bahwa nilai garam
dari 50 digunakan untuk hashing semua password kecuali satu.
Tambang, tentu saja, seperti yang Anda lihat di sana, HA,
adalah menggunakan garam yang berbeda, sehingga Anda yang mendapat sedikit tersandung
mungkin di Hacker 2, yang mungkin telah hasil dari memiliki kami digunakan
hash yang berbeda dari yang lain karena password saya sebenarnya sama
karena beberapa pengguna lainnya di sana.
Bahkan, jika Anda sudah menunggu berminggu-minggu untuk mengetahui
apa yang ada di sini adalah password password yang Anda ditantang
retak dalam edisi Hacker set, jadi tidak ada masalah 2 terlalu rumit.
Bahkan, ini Malan adalah sama dengan jharvard,
tetapi jika kita kembali mereka tampak berbeda.
>> Fokus pada jharvard di merah karena mereka asin berbeda.
Algoritma ini terganggu dengan cara yang
hash value, nilai dienkripsi terlihat sedikit berbeda
karena input yang sedikit berbeda, tetapi password bawah tenda
masih akhirnya merah.
Sekarang, siapa yang peduli tentang hal ini?
Nah, kami menyediakan Anda dengan pengguna sampel, sampel nama pengguna
dan hash password mereka sehingga Anda benar-benar memiliki beberapa
pelanggan untuk CS50 Keuangan saat pertama kali turun tanah dengan kode Anda.
Anda harus menerapkan lebih tabel dalam MySQL, dalam database.
Anda harus membuat spreadsheet lebih, efektif, tapi kami memutuskan untuk memberikan yang satu ini
untuk Anda mulai, dan Anda akan melihat bahwa masalah spesifikasi set
menuntun Anda melalui proses mengimpor tabel ini
dan juga menjelaskan apa beberapa karakteristik,
dan Anda juga akan melihat bahwa kami menyediakan Anda dengan kode
untuk menangani hashing atau enkripsi password tersebut,
sehingga Anda tidak perlu khawatir terlalu banyak tentang apa MD5 atau sejenisnya sebenarnya semua tentang.
>> Jadi, SQL, bahasa query terstruktur.
Hal ini, cukup sederhana, bahasa yang kita akan mulai menggunakan di pset 7
dan mungkin di luar untuk meminta data dari database beberapa.
Data tersebut, sekali lagi, disimpan tabularly dalam tabel relasional, kolom, dan baris,
tetapi menggunakan beberapa sintaks yang relatif sederhana seperti menghapus,
insert, update dan pilih bisa kita melakukan hal itu.
Kita dapat menghapus dari database, insert,
update data, serta pilih, yaitu, mengambil data dari database.
Bagaimana kita melakukan hal ini?
Biarkan aku pergi ke depan ke dalam alat.
Biarkan saya berhenti http://localhost,
yang, sekali lagi, adalah alat lokal itu sendiri.
Itulah julukan default.
Dan biarkan aku pergi ke / phpmyadmin.
Hal ini terjadi menjadi URL khusus yang alat telah dikonfigurasikan untuk memahami
yang segera meminta saya untuk nama pengguna dan kata sandi.
>> Seperti biasa, aku akan mengetik jharvard dan merah,
tapi menyadari bahwa adalah account administrator pada komputer.
Ini hanya kebetulan bahwa ada juga jharvard terdaftar untuk CS50 Keuangan.
Jharvard, merah, enter memberi saya user interface yang kita lihat
sekilas beberapa saat yang lalu, dan itu sedikit berlebihan pada awalnya,
tapi yakinlah, Anda tidak akan pernah harus klik sebagian besar link di alat ini.
Anda akan berakhir dengan menggunakan subset kecil yang super membantu,
yang pertama adalah database di sini.
Jika saya pergi ke database, perhatikan bahwa aku diminta untuk membuat database.
Ini seperti membuat file Excel yang baru, efektif.
Aku akan pergi ke depan dan memanggil kuliah ini, dan aku hanya akan mengabaikan lapangan ada, pemeriksaan.
Itu ada hubungannya dengan representasi data di dalamnya,
dan aku akan membuat klik, dan sekarang perhatikan saat aku melepaskan menciptakan
di sisi kiri di mana ia mengatakan tidak ada database
Saya harus segera melihat database kuliah.
>> Jika saya sekarang klik di sisi kiri, database kuliah,
perhatikan tab saya mengubah sedikit.
Aku punya struktur, SQL, ekspor, impor, dan beberapa hal lainnya.
Struktur cukup banyak kosong.
Tidak ada tabel ditemukan dalam database, seperti dikatakan di sini,
jadi mari kita membuat tabel, dan mari kita pergi ke depan dan membuat tabel
seperti siswa, dan berapa banyak kolom yang kita inginkan?
Mari kita menjaga ini sederhana, dan mari kita catatan untuk setiap siswa
nomor ID, nama, dan alamat email.
>> Kami akan tetap sederhana seperti itu, jadi 3 kolom, pergi.
Bentuk yang Anda lihat di sini sekarang menjadi sedikit berantakan dan luar biasa,
tapi kita hanya perlu pergi melalui itu baris demi baris, sehingga benar-benar cepat mari kita berikan
kolom pertama dalam database nama ID untuk identifikasi unik.
Ini akan menjadi integer. Aku benar-benar dapat mengabaikan panjang dan nilai-nilai.
Int akan menjadi 32 bit tidak peduli apa yang Anda ketik di sana, jadi mari kita biarkan kosong.
Nilai default, saya bisa membuatnya nol, sebagaimana didefinisikan.
Aku akan meninggalkan itu saja. Mari kita tidak khawatir tentang nilai-nilai default.
Mari kita gulir ke sini untuk itu, atribut yang tepat.
Ini menarik.
Mari kita pergi ke depan dan agak sewenang-wenang mengatakan bahwa ID harus unsigned.
Jangan buang-buang angka negatif.
>> Ayo 0-4000000000, memberi atau mengambil,
dan kemudian mari kita tidak menyentuh salah satu bidang dulu di sana,
tapi kemudian membiarkan saya ketik nama di sini,
dan kemudian yang lain adalah email, sehingga hasil tangkapan email
dan nama, jelas tidak bilangan bulat, jadi mari kita mengubah ini untuk bidang yang berbeda.
Ternyata varchar, char panjang variabel,
seperti string dalam database SQL
tapi panjang variabel, dan Anda benar-benar harus mengatakan itu di muka
panjang maksimum string, jadi aku akan agak sewenang-wenang
menurut jenis konvensi 255 karakter.
Aku benar-benar bisa mengatakan 32. Saya bisa mengatakan 1.000.
Anda jenis kebutuhan untuk memutuskan untuk diri sendiri berdasarkan demografi Anda apa yang
siswa terpanjang nama dan pergi dengan nomor atau sedikit lebih besar,
tapi apa yang bagus tentang varchar itu tidak akan menyia-nyiakan
255 byte pada nama setiap siswa.
Jika itu DAVID itu tidak akan menggunakan 255 byte secara keseluruhan,
tapi itu merupakan batas atas, jadi saya akan pergi dengan 255 hanya dengan konvensi,
tapi kita bisa berdebat bahwa ada beberapa nilai yang lebih rendah, dan untuk alamat email
hanya untuk konsisten 255, tapi sekali lagi, kita bisa memiliki perdebatan yang sama.
Tapi aku akan melakukan satu hal lain di sini di sisi kanan.
>> Apa kuat tentang database adalah bahwa hal itu dapat melakukan banyak angkat berat
atau kompleks bekerja untuk Anda.
Secara khusus, saya benar-benar tidak peduli apa yang nomor ID murid-Ku.
Ini hanya dimaksudkan untuk menjadi pengenal unik dalam database
jadi saya memiliki representasi 32-bit singkat dari siswa yang
sehingga saya memiliki beberapa cara unik mengidentifikasi mereka
jangan ada menjadi 2 Davids, misalnya, dalam satu kelas.
Bahkan, aku akan memeriksa kotak AI, kenaikan otomatis,
sehingga database, MySQL, keluar angka
apa ID setiap siswa baru dimasukkan ini akan menjadi.
Aku bahkan tidak harus peduli tentang hal itu dalam kode saya,
dan aku juga akan memilih sesuatu di bawah menu indeks.
Indeks drop-down di sini telah primer, unik,
indeks dan teks lengkap.
Anda mungkin bisa menebak apa yang beberapa hal-hal ini,
tapi ternyata dalam database relasional
Anda programmer atau administrator database bisa preemptively
memberikan petunjuk ke database seperti apa bidang
dalam sebuah tabel yang sedikit khusus.
>> Misalnya, dalam hal ini saya akan mengatakan bahwa ID
akan menjadi indeks utama, atau dikenal sebagai primary key.
Apa ini berarti menurut definisi adalah ID yang selanjutnya
unik akan mengidentifikasi siswa dalam tabel ini.
Tidak ada siswa akan memiliki ID yang sama karena aku memaksakan ini kendala atau indeks ini.
Selain itu, apa ini akan lakukan untuk saya adalah itu akan memberitahu
MySQL bahwa ID adalah khusus.
Saya peduli terutama tentang ID, jadi lanjutkan dan melakukan sihir mewah data struktur itu,
membangun beberapa jenis pohon.
Biasanya sesuatu yang disebut B-pohon, yang kita tidak melihat pada minggu lalu,
tapi itu struktur data lain seperti semangat yang sama dengan pohon biner
dan mencoba bahwa kita melihat, tapi itu akan mengatakan
ke database bidang ini sangat penting bahwa saya mungkin
ingin dapat mencari di atasnya, pergi ke depan dan membangun mewah beberapa
struktur data dalam memori untuk mempercepat pencarian, sehingga idealnya
mereka waktu yang konstan atau setidaknya dekat dengan yang mungkin
sehingga tidak berpindah ke pencarian linear, yang tidak akan
paling tinggi melakukan pendekatan.
Sebaliknya, alamat email bisa menjadi kunci utama.
>> Secara teori, alamat email setiap orang adalah unik, kecuali Anda berbagi akun tertentu,
tapi itu umumnya tidak baik untuk menggunakan sesuatu seperti string
sebagai primary key karena jika tujuannya dalam hidup adalah untuk secara unik mengidentifikasi
baris dalam tabel Anda tidak ada alasan untuk menggunakan 255 byte maksimal
untuk secara unik mengidentifikasi seseorang jika Anda bisa lolos dengan hanya 4 byte
atau int 32-bit.
Secara umum, primary key harus pendek dan ringkas
dan idealnya sesuatu seperti integer atau int besar, yang kebetulan 64 bit.
Namun alamat email harus unik, dan salah satu fitur dari database terlalu
adalah untuk menegakkan keunikan bagi saya.
Dengan memilih unik di sini di samping email, meskipun email itu sendiri
adalah menggulir dari layar, aku mengatakan ke database
tidak percaya padaku.
Jangan biarkan aku masukkan ke dalam database
alamat yang sama email dua kali, bahkan jika aku idiot dan saya tidak
sangat baik dengan ifs saya dan ifs lain dan kode PHP yang sebenarnya
dan aku sengaja membiarkan pengguna mendaftar dengan alamat email yang ada
database adalah satu lagi tingkat pertahanan untuk ketepatan
untuk memastikan bahwa alamat email duplikat tidak berakhir di meja.
>> Sekarang, sebaliknya, untuk nama Anda mungkin tidak ingin membuat yang unik
karena kemudian tidak pernah bisa 2 Davids atau 2 Mike Smiths, misalnya,
dalam database Anda, sehingga satu kami hanya akan pergi sendirian.
Aku akan pergi ke depan dan klik save di kanan bawah,
dan semuanya terlihat baik, tetapi perhatikan di sini
ini adalah bagian yang untuk saat ini kita tidak akan menghabiskan terlalu banyak waktu pada
karena sintaks yang sedikit rumit, dan kita tidak perlu membuat tabel
semua yang sering, tetapi SQL sendiri adalah bahasa,
sintaks yang benar di sini bahwa saya telah disorot.
Apa yang benar-benar phpMyAdmin itu menciptakan GUI berbasis web untuk Anda
dengan mana Anda dapat menghemat waktu dan tidak perlu secara manual mengetikkan
query SQL yang cukup panjang seperti itu.
>> Dengan kata lain, jika Anda ingin secara manual membuat tabel ini,
baik pada saat itu phpMyAdmin cepat atau bahkan dalam warna hitam dan putih
dengan menggunakan tab lainnya, ini tab SQL di mana Anda dapat mengetikkan pertanyaan SQL
Anda inginkan, terus terang, ini akan diambil saya satu menit
untuk benar-benar mengingat sintaks seluruh, dan bahkan maka saya mungkin akan
membuat beberapa kesalahan ketik, sehingga alat ini berguna untuk hal-hal seperti itu, dan itu juga instruktif.
Anda dapat mulai menyimpulkan apa sintaks
hanya dengan warna yang bagus pengkodean phpMyAdmin yang menambahkan
untuk kenyamanan visual kita.
Tapi sekarang mari kita lakukan ini sebagai gantinya.
Biarkan aku pergi ke tab insert di atas, dan biarkan aku pergi ke depan dan masukkan misalnya
ID dari katakanlah-Sebenarnya saya tidak peduli.
Ini akan kenaikan otomatis. Aku akan membiarkan kesepakatan database dengan ini.
Tapi aku akan Daud, dan email saya harus malan@harvard.edu.
>> Mari kita pergi ke depan di sini dan dimasukkan ke dalam Mike Smith sebagai satu lagi.
Aku akan memberi diriku nama terakhir juga,
dan kita akan minta dia menjadi smith@example.com,
dan kemudian mana saya pergi selanjutnya?
Nah, sepertinya pergi adalah tombol untuk klik, dan voila.
Perhatikan pada 2 baris atas dimasukkan.
Ini adalah query SQL yang sebenarnya.
Itulah alat phpMyAdmin dieksekusi untuk saya,
tetapi hasil akhirnya, pemberitahuan, jika saya sekarang pergi ke tab browsing,
adalah untuk melihat 2 baris dalam tabel ini, sangat mengingatkan estetis
dari meja kita lihat sebelumnya bagi pengguna kami dari pset 7,
salah satunya adalah David Malan, salah satunya sekarang adalah Mike Smith.
Tapi hanya harus jelas, saya tidak perlu menggunakan phpMyAdmin,
dan memang, Anda akan segera dapat menulis kode untuk pset 7
yang mengotomatisasi proses penambahan baris, menghapus baris, memperbarui baris dan sejenisnya,
jadi biar bukannya pergi ke tab SQL di sini
dan ketik * pilih dari mana siswa
email = "malan@harvard.edu."
>> Dengan kata lain misalkan sekarang Anda memiliki
beberapa bentuk HTML, dan jenis pengguna dalam alamat email mereka, antara bidang lainnya,
dan tujuannya sekarang adalah di PHP pada kode back end
untuk benar-benar mencari detail lain yang pengguna.
Apa nama lengkap Anda? Berapa nomor ID Anda?
Anda bisa menulis query SQL seperti ini, pilih * dari siswa
mana email = "malan@harvard.edu."
Dan jika saya kemudian klik pergi, perhatikan bahwa saya harus, dan memang aku, kembali hanya satu baris.
Mike dihilangkan dari hasil ini ditetapkan, sebagai koleksi baris
umumnya disebut, karena ia tidak memiliki alamat email yang sama seperti saya.
>> Sekarang, sekali lagi, di sini untuk pset 7 Anda akan menggunakan phpMyAdmin sebagai alat administrasi
dan alat pedagogis untuk belajar jalan
di seluruh dunia SQL, tapi pada akhir hari
Anda akan menulis pertanyaan ini dalam kode PHP yang sebenarnya,
dan begitu menantikan langkah-langkah dalam Zamyla pada khususnya
di mana Anda akan mendapatkan tur kode distribusi untuk sejumlah masalah
di mana kami telah memberikan Anda tidak hanya estetika untuk halaman login
dan logo seksi bagus yang mengatakan CS50 Keuangan, tapi kami juga telah memberi Anda
sekelompok fungsi yang akan membuat hidup Anda sedikit lebih mudah.
Kami juga telah menulis bagian dari pset untuk Anda,
bagian login pada khususnya, untuk memberikan rasa desain yang representatif
yang benar-benar menggunakan controller, misalnya, index.php,
login.php dan sejenisnya, dan kemudian Anda akan melihat pset juga memiliki direktori template
yang memiliki semua pandangan Anda, semua estetika.
Dan sehingga alur kerja secara keseluruhan di pset 7 akan menjadi yang
pengguna Anda mengunjungi controller melalui URL di browser.
Bahwa pengendali berisi kode PHP yang Anda tulis, dan di dalam kode PHP Anda
mungkin beberapa baris SQL bersarang di antara tanda kutip ganda
dan diteruskan ke fungsi kami menulis permintaan disebut
yang akan membantu Anda berbicara ke database tanpa menggunakan sesuatu seperti
alat administrasi seperti phpMyAdmin.
>> Anda akan dapat menulis pernyataan SQL dalam kode PHP
dan mendapatkan kembali array PHP hasil set,
dari baris yang benar-benar cocok dengan permintaan itu.
Dan sama akan Anda dapat melakukan menyisipkan atau menghapus
atau update atau sejenisnya, sintaks yang cukup mirip,
dan Anda akan melihat dari beberapa referensi online, dari kode distribusi
dan dari pset pak sendiri persis bagaimana untuk pergi tentang melakukan hal itu.
Sadarilah pada akhirnya kita benar-benar hanya menggaruk permukaan SQL
dan MySQL, tapi kekuatan itu benar-benar adalah bahwa hal itu akan membebaskan Anda
untuk fokus pada masalah yang Anda ingin memecahkan, kasus penggunaan Anda ingin menerapkan
tanpa harus khawatir cukup banyak, setidaknya sejak dini,
tentang di mana dan bagaimana untuk menyimpan dan mencari database Anda,
dan ini secara harfiah di mana Facebook sendiri punya yang mulai
menggunakan MySQL dan kemudian menggunakan lebih server MySQL dan kemudian lebih MySQL server
tak lama sampai mereka kemudian harus benar-benar mulai berpikir keras tentang bagaimana
menyimpan data, bagaimana untuk menyimpan hal-hal bahkan lebih efisien,
jadi meskipun kami akan mengambil untuk diberikan fakta bahwa indeks dan kendala yang unik
dan sebagainya hanya bekerja ada percakapan yang sangat menarik
bahwa ini semua dapat akhirnya menyebabkan, sehingga menyadari bahwa kita hanya menggaruk permukaan
dari apa yang akhirnya bisa untuk Anda atau proyek Anda menjadi sangat sedikit data yang besar.
>> Dengan mengatakan bahwa, mari kita berakhir di sini, dan kami akan melihat Anda minggu depan.
[CS50.TV]