[Powered by Google Translate] [Minggu 8]
[David J Malan] [Harvard University]
[Ini adalah CS50.] [CS50.TV]
>> Selamat datang kembali.
Ini adalah CS50, dan ini adalah awal minggu 8.
Beberapa peluang minggu ini,
di antara mereka ini bicara di sini, di mana beberapa makanan akan disajikan.
Untuk lebih jelasnya memeriksa slide yang sedang online.
Dan juga acara lain minggu ini oleh kita sendiri Thomas Carriero.
Dia salah satu rekan mantan CS50 kepala pengajaran yang sekarang di Dropbox,
dan dia orang yang mengaitkan kami dengan Anda tahu apa,
jadi jika Anda ingin lebih kepala itu untuk pembicaraan mereka sore ini untuk Dropbox dan banyak lagi.
CS50 makan siang Jumat ini.
Apakah bergabung dengan kami jika Anda mampu, 1:15, seperti biasa, di Fire and Ice.
>> Dan sekarang kita menyelam ke dalam sesuatu yang disebut Seminar.
CS50 kami Seminar, recall, adalah kelas-kelas opsional dipimpin oleh rekan-rekan mengajar
dan tentu saja asisten dan teman-teman tentu saja,
orang-orang dari sebuah kelompok di kampus disebut ABCD, yang merupakan kelompok
technophiles di kampus, serta kelompok yang disebut HCS,
Harvard Computer Society, mahasiswa yang sama tertarik pada komputasi.
Daftar tahun ini meliputi seminar seminar tentang Android dan iOS dan JavaScript
dan PHP, Unix, Vim, dan banyak lagi, sehingga menyadari bahwa seminar yang datang.
Jika Anda ingin RSVP untuk salah satu dari mereka menuju ke URL yang ada.
Kami kemudian akan posting di website kursus ini waktu dan tempat setelah mereka diselesaikan.
Tapi tahu senilai masih ada 5 tahun dari seminar sebelumnya tersedia secara online,
banyak yang masih sangat banyak saat ini dalam hal teknologi Anda mungkin
ingin bermain dengan untuk proyek akhir Anda, jadi kepala di sana untuk beberapa video yang tersedia daripadanya.
>> CSS, bagi Anda yang terbiasa dengan CSS sudah,
apa itu secara singkat?
Apa itu CSS?
Ini cascading style sheets, dan apa artinya?
Apa artinya itu lakukan untuk kita, CSS?
Baiklah, mari kita pemanasan dengan satu lebih mudah, HTML, hypertext markup language.
Apa artinya itu lakukan untuk kita?
Siapa pun?
Sudah mulai benar-benar canggung mengajukan pertanyaan-pertanyaan.
HTML, hypertext markup language.
Ya? Tidak ada?
[Respon siswa tidak terdengar]
Oke, baik, memungkinkan kita untuk mark up teks untuk menampilkan dalam browser web.
Ini bukan bahasa pemrograman.
Ini memang bahasa markup, yang berarti menginstruksikan browser bagaimana menampilkan
informasi, sehingga inkarnasi sederhana ini seperti yang kita lihat
adalah sesuatu yang super sederhana seperti boldfacing, terbuka braket braket b tertutup mengatakan
membuat teks tebal ini, dan itu sebenarnya hanya satu dari banyak cara
di mana kita bisa melakukan itu, dan memang, hari ini pendekatan yang lebih baik
untuk stylizing halaman web Anda, membuat hal-hal tebal dan miring
dan terpusat dan dibenarkan dan sejenisnya, tidak dilakukan melalui tag HTML saja
melainkan dengan teknik yang disebut CSS, Cascading style sheet.
Ini adalah bahasa tersendiri.
Ini juga bukan bahasa pemrograman tapi-
semua orang, ini adalah Dan, yang terus bergabung dengan kami hari ini.
Beberapa kesulitan teknis. Tidak masalah.
>> CSS memungkinkan kita untuk menyesuaikan dgn mode halaman
dengan menetapkan apa yang disebut sifat, jadi mari kita lihat ini
dengan cara beberapa contoh dasar.
Biarkan aku pergi ke dalam alat ini.
Saya memiliki sumber 8 direktori Senin sini,
dan aku akan pergi ke sebuah direktori yang disebut CSS di mana kita memiliki sejumlah
file menunggu kami di sini,
dan dalam folder ini kita miliki, misalnya, search0.html dari terakhir kali.
Sekarang, ingat dengan search0 kami meninggalkan pada catatan ini
dengan menerapkan semacam Google atau benar-benar hanya ujung depan untuk itu seminggu yang lalu,
dan perhatikan bahwa kita memiliki beberapa tag baru di sana.
Kami memiliki h1 untuk judul, besar tebal,
Bentuk, yang memungkinkan kita untuk benar-benar memiliki bentuk HTML untuk input pengguna.
Aksi, apa arti dari atribut aksi
pada tag form HTML?
Apa arti dari tindakan ini,?
Saya hanya akan melakukan ini hari ini.
Aksi adalah tujuan ke mana formulir akan disampaikan.
Fakta bahwa yang mengatakan tindakan = "google.com / search"
berarti bahwa ketika pengguna mengklik tombol submit atau setara
apapun kolom formulir yang mereka mengisi akan dikirim ke server kami tidak
atau alat kami melainkan dengan URL tertentu di Google.
Dan metode itu akan digunakan disebut dapatkan,
dan mendapatkan, untuk saat ini, hanya teknik untuk menyampaikan informasi bersama ke server web
dengan cara URL, jadi mari kita lihat kembali bagaimana ini bekerja.
>> Perhatikan bahwa ada sebuah masukan yang namanya q
Jenis yang adalah teks dan kemudian masukan kedua jenis menyerahkan
Nilai yang merupakan CS50 Cari, dan memang, jika kita membuka file ini di sini,
search0.html, itu bentuk super sederhana,
dan jika saya mencari sesuatu seperti ilmu komputer
dan kemudian tekan enter atau klik CS50 Cari
melihat bahwa apa yang terjadi di luar sampai ke Google
Saya telah secara khusus berakhir di URL ini di atas,
google.com / search q =? komputer + ilmu,
dan ilmu komputer jelas apa yang saya diketik masuk
+ Hanya berarti bahwa di mana karakter spasi itu,
dan itu dilakukan oleh browser hanya untuk memastikan bahwa tidak ada
kebingungan dan spasi dalam URL yang sebenarnya.
Dan kemudian q, tentu saja, adalah nama parameter.
Kami belum melihat bagaimana kita, programmer, benar-benar dapat mengakses q belum.
Kita bisa berasumsi bahwa Google tahu apa yang harus dilakukan dengan ini di sini,
tapi kita akan sampai di sana pada waktunya saat ini.
>> Tapi biarkan aku mengambil melihat sebaliknya di search1.html,
yang terlihat sedikit berbeda karena saya memutuskan bahwa bentuk di sini adalah hanya sedikit lumpuh.
Maksudku, itu di bagian kiri atas.
Ada benar-benar tidak ada estetika untuk itu, dan jadi saya ingin menyesuaikan dgn mode ini
sedikit lebih seperti Google, yang homepage, ingat,
meskipun Anda mungkin tidak mengunjungi yang sering, terlihat seperti ini saat ini di Halloween.
Jika kita bukannya membuka versi 1 dari file ini, cari 1.html, saya sudah berpusat itu.
Masih cukup jelek, tapi setidaknya sekarang aku sudah mulai mengontrol estetika halaman ini,
bukan hanya menandai daripadanya.
Mari kita lihat pencarian 1, dan ada benar-benar hanya satu perbedaan di sini,
yang mungkin melompat keluar pada Anda, atau mungkin tidak,
tapi apa satu baris atau potongan perbedaan?
>> Ada ini atribut style, sehingga ternyata bahwa dalam HTML
unsur yang paling, tag yang paling dapat memiliki atribut style pada mereka,
dan dalam bahwa atribut gaya adalah string dikutip,
dan bahwa string dikutip adalah CSS.
Anda dapat menempatkan cascading style sheet di sana
dengan menetapkan sebagai nama properti
diikuti oleh titik dua diikuti oleh nilai.
Ini adalah jenis keputusan desain disayangkan beberapa tahun yang lalu
bahwa CSS adalah bahasa tersendiri,
tapi sintaksis itu sangat berbeda dari HTML.
Dalam kasus ini, kita melihat bahwa dalam halaman web saya, yang ditulis dalam HTML,
Saya memiliki CSS dalam kutipan ini, dan konvensi untuk CSS
adalah bahwa Anda memiliki apa yang disebut properti diikuti, sekali lagi, titik dua,
diikuti oleh nilai properti itu, sehingga tidak ada tanda sama.
Tidak ada kutipan tambahan.
Hanya saja pasangan ini usus nilai dipisahkan kunci,
dan baris teks tidak persis apa yang dikatakannya.
Ini sejalan teks dalam badan halaman, yang benar-benar keberanian halaman,
di tengah.
>> Oke, hasil akhirnya itu, harus jelas, ini.
Tidak semua seksi itu, tapi setidaknya itu berpusat dan sedikit lebih seperti Google yang sebenarnya.
Tapi bagaimana kalau saya bukan membuka versi 2 ini
dan menunjukkan ke sini tag baru sama sekali?
Sekarang di kepala halaman saya, yang sebelumnya hanya memiliki tag yang
dalam semua contoh sebelumnya?
Itu hanya memiliki ini, judul.
Sesaat lalu tag kepala tampak seperti ini.
Sekarang bukan memiliki dalam tag gaya itu,
dan ini juga, saya minta maaf, sintaksis terlihat sangat berbeda dari HTML,
tetapi Anda terbiasa untuk itu, dimana dalam tag gaya
Saya sekarang dapat faktor luar apa yang beberapa saat yang lalu
atribut, atribut gaya, dan saya bisa meletakkannya di bagian paling atas halaman saya.
>> Kenapa?
Nah, ini adalah langkah menuju membersihkan semuanya, seperti dalam menulis kode C
kadang-kadang kita akan menulis fungsi untuk faktor luar fungsi umum.
Ini hanya sedikit bersih untuk memulai anjak hal-hal seperti estetika
satu lokasi pusat daripada memiliki itu semua menyelingi seluruh HTML Anda.
Hal ini juga melakukan apa yang dikatakannya, meskipun ada sedikit sintaks baru.
Ini di sini adalah selector, dan tubuh hanya berarti pilih elemen body
dan menerapkan sifat-sifat berikut untuk itu.
Nah, properti adalah persis sama.
Untuk mengukur baik saya telah menambahkan titik koma di akhir,
yang cenderung konvensi, dan saya sudah dibungkus ini seluruh properti
dalam kurung kurawal karena saya benar-benar bisa memiliki hal-hal yang berbeda di sini.
Aku benar-benar bisa mengatakan sesuatu seperti warna: biru;
>> Sekarang ini juga tidak akan menjadi langkah menuju sesuatu yang semua yang cantik,
tetapi jika aku sekarang kembali ke versi 2 saya setidaknya sekarang membuat tubuh saya
halaman teks biru semua.
Tombol tetap sama karena itulah input. Ini bukan teks murni.
Tetapi segala sesuatu yang adalah teks, seperti CS50 Cari di bagian atas, adalah biru sebenarnya.
Sekali lagi, semua kita lakukan sekarang adalah menghapus dari tag body, pemberitahuan,
atribut style, dan kami sudah itu diperhitungkan di sini.
Ini bukan perbaikan besar, tetapi jika kita mengambil satu langkah lebih jauh
perhatikan apa yang bisa kita lakukan dalam versi ketiga di sini.
>> Pada search3.html halaman web hampir identik
kecuali apa yang tag baru sekarang?
Link, jadi yang satu ini tidak sangat aptly bernama
karena Anda tidak menghubungkan dalam arti hyperlink diklik.
Sebaliknya, Anda semacam melakukan setara dengan # include di C
dimana tag link dengan atribut href
dan atribut rel mengatakan pergi ke depan
dan copy paste isi dari file bernama search3.css di sini, pada dasarnya.
Ini tidak cukup melakukan itu, tapi itulah semangat itu.
Ia mengatakan pergi terbuka file, search3.css,
dan memperlakukannya seolah-olah pengguna telah mengetik di sini, di kepala halaman
seperti yang saya lakukan pada contoh sebelumnya.
Search3.css, sementara itu, cukup sederhana.
Ini benar-benar hanya berisi apa yang beberapa saat yang lalu
dalam tag gaya, tapi aku itu faktor sini untuk file sendiri.
>> Meskipun kita tidak menghabiskan banyak waktu sama sekali dalam HTML atau pemrograman web
hanya intuitif apa motivasi, mungkin, untuk anjak keluar
ini potongan kecil bahkan dari CSS ke file sendiri
dan kemudian memasukkannya dengan tag link di sini?
[Respon siswa tidak terdengar]
Oke, akan lebih mudah untuk membaca dalam arti bahwa Anda memiliki CSS Anda dalam file CSS.
Anda memiliki HTML Anda dalam file HTML Anda, sehingga lebih mudah dibaca dalam pengertian itu.
Apa lagi yang mungkin menarik? Ya.
[Respon siswa tidak terdengar]
Ya, sehingga Anda dapat memasukkannya berkali-kali, jadi sekarang kita lakukan ini
contoh dasar dengan file individual, tapi rasa Anda benar-benar membuat
sebuah situs yang sebenarnya seperti Anda akan untuk pset 7 atau proyek akhir Anda mungkin,
dan Anda ingin memiliki beberapa halaman web, seperti yang tentu umum pada
Web Dunia yang sebenarnya lebar, dan itu akan menjadi semacam lumpuh
harus menyalin dan menyisipkan warna biru yang sama
dan teks yang sama selaras pusat dalam setiap salah satu halaman.
Melainkan lebih masuk akal untuk faktor luar, seperti sudah kita lakukan di C
dengan file h., taruh di satu tempat pusat,
dalam hal ini search3.css kasus, dan kemudian memungkinkan file apapun
dalam situs web Anda untuk benar-benar menyertakan file yang dengan cara ini tag di sini di baris 16.
Seperti biasanya terjadi, kami mulai dengan versi 0, yang jenis karya
tetapi belum tentu yang terbaik, dan dengan setiap langkah,
pencarian 1, pencarian 2, dan sekarang pencarian 3 kami telah mengambil langkah-langkah bayi
terhadap desain yang sedikit lebih bersih dan lebih persiapan
untuk halaman yang lebih kompleks yang bisa kita lakukan di jalan.
>> Mari saya membuka salah satu contoh terakhir di sini hanya untuk menunjukkan
halaman bahkan lebih bergaya, tapi pertama-tama mari kita lihat HTML.
Ini adalah search4.html, dan melihat bahwa secara struktural hampir sama
kecuali untuk pengenalan tag baru, div.
Div adalah tag yang memperkenalkan pembagian halaman.
Anda dapat menganggap ini sebagai persegi panjang tak terlihat.
Ini semacam menciptakan petak daerah di halaman web
bahwa Anda dapat menyesuaikan dgn mode sekaligus.
Apa yang saya lakukan di sini adalah sebagai berikut.
Dalam tag tubuh saya, yang telah ada selama ini,
Saya katakan menciptakan sebuah divisi dari halaman sini melalui jalur 45 melalui 47,
dan itu berarti pada dasarnya memberi saya sebuah persegi panjang terlihat di sepanjang bagian atas halaman.
Kemudian memberi saya sebuah persegi panjang kedua, meskipun tak terlihat, di bawah itu,
dan mengidentifikasi dengan isi nama, dan kemudian terakhir,
memberi saya sebuah divisi ketiga halaman di bagian bawah
disebut ID.
Kita akan melihat mengapa saya sudah melakukan ini hanya dalam beberapa saat,
tetapi secara konseptual saya memiliki divisi header.
Saya memiliki divisi konten, dan saya memiliki divisi footer halaman
meskipun ini hanya di markup.
Pengguna tidak akan melihat 3 persegi panjang,
tapi semacam struktural ada di belakang layar
mereka benar-benar hadir.
>> Sekarang, siapa yang peduli? Mengapa benar-benar melakukan ini?
Segala sesuatu yang lain pada halaman yang sama seperti yang telah kita lihat sebelumnya.
Ini formulir saya. Berikut masukan saya, masukan saya, satu baris dan sebagainya.
Berikut gambar, meskipun, jadi kita akan melihat di mana ini berasal dari hanya dalam beberapa saat.
Berikut adalah footer, yang baru, hanya karena saya ingin memperkenalkan
lagi konten di sini.
Jika kita gulir ke atas melihat bahwa ID dari div ini adalah header.
ID dari div ini adalah konten, dan ID satu ini footer.
Dan seperti namanya, bila Anda memiliki atribut ID
dalam HTML, menurut definisi itu unik harus mengidentifikasi
salah satu elemen, salah satu tag dalam halaman Anda.
Beban benar-benar pada Anda untuk mengingat bahwa Anda memiliki ID sundulan sudah.
Anda memiliki catatan kaki. Anda memiliki ID konten yang sudah.
Komputer tidak akan mencari tahu apa ID yang tersedia untuk Anda,
sehingga Anda secara tidak sengaja bisa memberikan 2 tag ID header,
dan itu hanya akan salah.
>> Anda harus ingat apa yang telah Anda buat,
tetapi sekali Anda telah melakukan bahwa pemberitahuan apa yang bisa kita lakukan di sini.
Saya sekarang dapat menentukan dalam tag gaya saya di atas
atau ekuivalen dalam file CSS saya, jika saya masih menggunakan versi itu,
Saya dapat mengatakan # header, dan apa artinya adalah bahwa apa pun tag
di halaman web ini memiliki ID header
dan #, hanya dengan konvensi manusia, mewakili ID.
Tanda tajam atau pon tanda mewakili ID.
Header adalah nama yang saya berikan itu.
Ini berarti menerapkan properti CSS
untuk apa pun tag di halaman ini dikenakan ID header.
Sama kesepakatan di sini.
Terapkan properti, yang kebetulan sama, untuk setiap elemen
mana ID adalah konten, dan kemudian di sini
perhatikan saya mendapat sedikit lebih menarik dengan footer.
Setiap elemen yang memiliki ID footer, yang ada mungkin hanya satu menurut definisi,
pergi ke depan dan membuat ukuran font yang lebih kecil,
nya huruf tebal berat, marjin 20 piksel.
>> Apa artinya?
Hanya saja margin di atas, bawah, dan kiri dan kanan.
Ini berarti memberikan margin 20-pixel terlihat di sekitarnya
hanya untuk mendorong segala sesuatu yang lain jauh dari itu sedikit, seperti yang mungkin Anda lakukan dalam Word,
Microsoft Word atau Pages atau sejenisnya.
Dan kemudian teks menyelaraskan pusat.
Mari kita lihat hasil akhir, dan kemudian kita akan kembali ke potongan yang tersisa dari CSS sana.
Ini adalah versi 4, terakhir kami untuk contoh pencarian, dan itu jauh, lebih seksi banyak.
Sekarang, dalam keadilan, saya hanya Googled "google Generator huruf logo."
Dan yang memungkinkan saya untuk membuat GIF, format gambar, yang terlihat seperti itu ada.
Bahkan, Anda dapat melakukan hal ini juga.
Kami memiliki "google Generator font logo."
>> Mari kita lihat apakah kita bisa melakukan hal ini.
Oke, saya pikir ini adalah website saya digunakan.
Kita dapat mengatakan Ec 10, misalnya, dan membuat mereka sendiri.
Anda dapat bermain dengan ini sepanjang hari dan kemudian klik kanan di atasnya
dan kemudian men-download GIF yang sebenarnya, yang adalah semua yang saya lakukan.
Dan memang, itulah sebabnya dalam HTML saya, ingat, di sini
Aku punya tag gambar, yang kita lihat sebentar minggu lalu
yang sumber logo.gif.
Dan apa lagi adalah motivasi untuk memiliki atribut alt,
ini atribut alternatif?
Ya.
[Respon siswa tidak terdengar]
Baik, jadi 2 alasan benar, jika browser tidak dapat menarik gambar
karena Anda memiliki koneksi jaringan yang lambat atau gambar yang rusak
atau sesuatu seperti itu setidaknya manusia bisa melihat "CS50 pencarian,"
dan kemudian juga untuk alasan aksesibilitas.
Jika Anda memiliki pengguna yang buta dan menggunakan pembaca layar
dan karena itu jelas tidak dapat melihat gambar mereka setidaknya bisa
mendengar teks jika komputer mereka berbicara kepada mereka.
>> Secara umum, ini adalah yang terbaik berlatih ketika datang ke aksesibilitas halaman
sehingga pengguna bahkan dalam situasi yang bisa mendengar atau melihat, sehingga untuk berbicara,
apa yang ada di halaman Anda.
Ada satu hal lain yang saya lakukan di sini
yang sedikit menarik, dan kita akan melihat lebih banyak tentang hal ini dalam masalah set 7
melalui salah satu dari celana pendek yang dipimpin oleh salah satu rekan mengajar.
Tapi # isi mengacu pada tag
mana ID adalah konten, tapi kemudian ada karakter spasi, dan kemudian ada masukan kata.
Nah, apa yang menarik tentang CSS adalah bahwa Anda dapat
mengacu pada tag di semacam halaman hierarkis,
dan apa ini berarti potongan CSS adalah menemukan tag
mana ID adalah konten, dan kemudian menerapkan sifat berikut
untuk semua masukan tag yang keturunan konten,
itu adalah yang menjorok di dalamnya.
Indentasi, sekali lagi, ini hanya penting ke komputer, bukan untuk manusia,
tetapi oleh konvensi yang kita indent hal-hal seperti kita pergi lebih dalam ke halaman,
jadi ini berarti menerapkan margin 5 pixel untuk setiap elemen input
itu suatu tempat dalam atau bersarang dalam
elemen mana ID adalah konten.
>> Siapa yang yang berlaku untuk?
Nah, sebenarnya ada hanya ini 2 orang di sini.
Perhatikan bahwa dalam bentuk ada 2 input,
karena ada sudah untuk semua contoh.
Tetapi perhatikan bahwa mereka 2 input kebetulan bersarang di dalam,
meskipun sedikit mendalam, lapisan beberapa lekukan,
dalam tag mana ID adalah konten.
Apa artinya ini?
Jika kita pergi ke browser di sini Anda dapat melihat pernah jadi sedikit-
biar tampilannya di-bahwa ada sedikit padding antara tombol
dan antara kolom teks.
>> Biarkan saya sementara matikan.
Biarkan aku pergi ke CSS saya, dan biarkan aku pergi ke depan dan hanya
mengubah marjin ini dari 5 pixel ke 0 piksel.
Biarkan aku pergi ke depan dan kemudian menyimpan file tersebut, kembali ke mesin pencari
dan kembali, dan menonton tengah halaman.
Semuanya mendapat dikompresi bersama-sama, dan ketika saya pertama kali melecut contoh ini sampai
Saya pikir yang tampak bodoh dengan bidang teks dan kemudian tombol langsung di bawahnya.
Saya ingin pad itu sedikit, jadi saya memperkenalkan margin.
Apa yang kita tidak akan dilakukan di kuliah adalah pergi melalui beberapa lusin
CSS properti yang ada karena, sekali lagi, ada hal-hal seperti ukuran font,
font yang berat, margin, teks menyelaraskan, dan lain-lain beberapa lusin,
dan kami akan merujuk Anda dalam masalah set 7 untuk tutorial online berbagai
dan referensi yang memungkinkan Anda untuk mengambil hal-hal ini.
Tapi apa yang benar-benar penting pada akhir hari
>> adalah untuk memahami bagaimana hal-hal ini diterapkan.
Sekali lagi, jika kita memiliki dalam tag gaya yang
bisa pergi pemilih, jenis pengidentifikasi yang menentukan
kepada siapa Anda ingin menerapkan properti,
dan kemudian Anda meletakkan properti sebagai pasangan nilai kunci
dipisahkan oleh titik dua, dan kemudian berakhir dengan titik koma,
atau Anda dapat rip semua keluar itu dan memasukkannya ke dalam sebuah file CSS terpisah
tersendiri.
Baiklah, pertanyaan pada konsep
atau gambaran besar dari CSS?
Anda lagi akan melihat lebih banyak dari itu di pset 7,
tapi kami akan tetap umumnya cukup sederhana.
Tidak ada? Baiklah.
Sudah waktunya untuk bahasa pemrograman yang sebenarnya,
dan kami akan kembali ke sedikit CSS dalam bentuk contoh.
PHP sebenarnya bahasa yang luar biasa diakses
dalam hal sintaksis hampir setara dengan C.
Dengan kata lain, jika Anda tahu C, Anda tahu untuk PHP sebagian besar,
setidaknya sintaksis, meskipun ada beberapa fitur baru
dan beberapa konsep baru kita harus melihat.
>> Tapi bagi sebagian besar, sekarang kita transisi dari C ke PHP
sebagian besar barang baru benar-benar dalam gambaran besar,
bagaimana Anda menggunakan bahasa untuk program di Web sebagai lawan
pada baris perintah atau dalam berkedip cepat seperti yang kita telah lakukan sejauh ini.
Untuk referensi, terutama dengan pset 7 dan seterusnya tugas akhir,
jangan mengambil keuntungan dari URL ini di sini jika Anda ingin membaca tentang formalitas dari PHP.
Ini benar-benar seperti sebuah buku teks online gratis efektif,
dan Anda juga akan menemukan bahwa apa yang benar-benar baik tentang PHP
adalah bahwa ada ratusan fungsi yang datang dengan itu,
sedangkan di C Anda tidak selalu memiliki akses ke
fungsi lebih dari berada di perpustakaan matematika, perpustakaan CS50.
Dalam PHP dan banyak bahasa modern, Python dan Ruby antara mereka,
Anda mendapatkan akses ke fungsi sehingga lebih banyak, yang berarti Anda bisa menulis
banyak kode kurang karena Anda dapat berdiri di atas bahu orang lain
yang telah menulis hal-hal tertentu bagi Anda.
>> Mari kita mengambil tur singkat dari sintaks PHP dan kemudian menulis beberapa contoh.
Apa yang baik tentang PHP pertama dan terutama
adalah tidak ada fungsi utama.
Jika Anda ingin menulis sebuah program di PHP Anda hanya mulai menulis kode,
dan Anda tidak perlu khawatir tentang utama.
Ada int ada. Ada tidak kembali.
Tidak ada argv, argc yang diperlukan bila Anda menulis program.
Sebaliknya Anda hanya dapat mulai menulis kode, dan ini adalah bagian
karena PHP adalah apa yang disebut bahasa ditafsirkan.
C dikompilasi, dan itu disusun dalam arti bahwa Anda mulai
dengan kode sumber, jalankan melalui dentang, yang merupakan kompilator,
dan akhirnya setelah beberapa jumlah langkah Anda mendapatkan kode objek, 0s dan 1s.
PHP dan Python dan Ruby dan Pearl dan lain-lain
berbagai jenis bahasa yang Anda tidak kompilasi mereka.
Anda tidak pergi dari kode sumber untuk 0s dan 1s.
Anda hanya menjalankan kode sumber, dan Anda menjalankan kode sumber
dengan menulis dalam sebuah file teks biasa, berakhir. php dalam hal ini
bukannya c,. dan program apa yang tidak pada komputer Anda
yang secara harfiah menafsirkan baris kode dengan baris demi baris.
>> Dengan kata lain, daripada menulis program dan menjalankan program
Anda malah langsung menulis sebuah program dengan file yang berakhir dengan. php.
Kemudian Anda menjalankan program yang sebenarnya disebut php.exe, jika Anda berada di Windows,
atau hanya PHP jika Anda berada di Mac OS atau Linux,
dan Anda berikan sebagai masukan untuk program PHP kode sumber Anda sendiri,
dan tujuan dalam hidup adalah untuk membaca atas kode Anda ke bawah, kiri ke kanan,
dan melakukan apa pun yang Anda sudah mengatakan hal itu dapat dilakukan.
>> Mari kita lihat apa ini akan berarti sintaksis.
Dalam PHP kita memiliki kondisi.
Slide ini identik dengan apa yang Anda lihat kembali dalam seminggu 1
karena kondisi sintaksis, ifs dan ifs lain dan lain di PHP
terlihat persis seperti ini.
Ketika datang ke ekspresi boolean mereka akan terlihat persis seperti ini.
Ketika datang ke anding sesuatu bersama-sama sebagai boolean itu akan terlihat persis seperti ini.
Switch terlihat sama, dan Anda mendapatkan manfaat tambahan di PHP
bahwa switch dalam C hanya bisa beralih pada char atau int.
Anda tidak bisa beralih pada nilai string.
Dalam PHP Anda benar-benar dapat memiliki ekspresi
yang merupakan variabel yang isinya adalah string,
dan Anda benar-benar dapat melakukan perbandingan string dalam cara intuitif yang nyata,
bukan perbandingan pointer, dalam rangka untuk memutuskan apakah akan melakukan kasus saya atau j atau sesuatu yang lain.
Kita akan melihat yang berpotensi sebelum lama.
>> Loops terlalu mengagumkan adalah sama.
Untuk loop memiliki inisialisasi, kondisi, dan beberapa jumlah update.
Sementara loop juga ada di PHP.
Lakukan sementara loop juga ada di PHP,
dan array ada di PHP, tapi di sini adalah di mana sintaks mulai mendapatkan sedikit berbeda,
namun konsep yang sama, dan konsep benar-benar sama
karena mereka berada di 0 Minggu dengan Scratch.
Pertama dan terpenting adalah tanda $.
Ini adalah keputusan desain di PHP dimana setiap variabel
di PHP dengan desain dimulai dengan tanda $.
Tidak ada X, Y, Z. Ini lebih sekarang $ X, Y $, $ Z hanya karena.
Ini adalah sesuatu yang perlu diingat, dan sekarang di sisi kanan
ini terlihat mirip dengan array,
tapi kami menggunakan kurung siku di sini.
Dalam PHP dan JavaScript, seperti yang kita akhirnya akan melihat,
untuk mendeklarasikan array Anda lakukan braket persegi terbuka dan tertutup braket persegi,
dan kemudian Anda memiliki daftar dipisahkan koma dari nilai-nilai, apakah ints
atau string atau karakter, apa pun yang Anda inginkan, dalam ekspresi yang ada.
>> Sekarang, bagaimana kita melakukan sesuatu seperti ini di C?
Apa sintaks untuk mendeklarasikan array statis nomor dikenal?
Itu kurung kurawal, perbedaan sangat kecil di sini, tapi di kedua PHP
dan akhirnya JavaScript itu hanya menggunakan kurung siku, sehingga benar-benar
detail hanya menarik di sini adalah tanda $ untuk nama variabel
dan juga tanda kurung siku, dan ada satu hal yang aneh
yang telah dihilangkan serta di sisi kiri tanda =.
Apa yang hilang bahwa kita telah membutuhkan selama berminggu-minggu sekarang? Ya.
[Respon siswa tidak terdengar]
Ukuran, sehingga tidak ada menyebutkan ukuran array.
Terus terang, tidak ada menyebutkan tanda kurung siku di sisi kiri
dari tanda =, dan apa lagi yang hilang dari garis?
Ya >> [respon siswa tidak terdengar].
Jenis, sehingga apa yang menarik khususnya tentang PHP
adalah bahwa hal itu bukan bahasa diketik kuat sebagai C adalah,
dan itu sangat diketik dalam arti bahwa Anda harus mengatakan char,
Anda harus mengatakan int, Anda harus mengatakan mengambang.
>> Setiap kali Anda ingin sebuah variabel Anda harus memberitahu dentang jenis adalah.
PHP adalah sedikit malas.
Ini longgar diketik dalam arti bahwa
Anda dapat memiliki mengapung dan karakter dan string
dan ints dan sebagainya, tetapi bahasa itu sendiri
tidak benar-benar peduli apa yang Anda masukkan dalam variabel.
Anda tidak harus memberitahukannya terlebih dahulu apa tipe data
akan dalam variabel.
Itu sepenuhnya terserah Anda, jadi ini bagus
karena Anda tidak perlu khawatir karena banyak tentang data yang mengetik
dan mengkhawatirkan apa argumen Anda dan sebagainya.
Ini juga berarti akhirnya fungsi dalam PHP akan dapat kembali
baik sebagai int sebagian besar waktu, dan mungkin sesekali
mereka akan kembali, bool palsu boolean, misalnya, untuk menandakan sesuatu yang tidak beres.
Ini memberikan kita beberapa upsides, tetapi juga akan membuat kita semacam dengan desain
sedikit malas ketika datang ke mengetik data.
>> Apa lagi yang perlu diingat di sini?
Variabel terlihat cukup seperti ini, sehingga $ s = "halo, dunia."
Itu mungkin inferable dari contoh sebelumnya,
dan kami memiliki jenis lain dari loop.
Ini yang kita benar-benar akan melihat sekali-sekali karena itu sangat berguna,
foreach membangun.
Dalam kasus ini, loop foreach mengambil dalam 3 nya kata kurung biasanya,
$ Pertama sesuatu, apa yang array yang Anda ingin iterate atas anggota,
kemudian harfiah kata kunci sebagai, dan kemudian terakhir,
nama lain variabel yang Anda bisa memilih.
Hal ini dapat foo, bar, atau elemen,
dan apa yang membangun ini tidak
adalah jika array $ berisi 10 unsur
pada setiap iterasi dari array-maaf, pada setiap iterasi dari loop ini
elemen yang disebut variabel akan diperbarui
menjadi elemen pertama dalam array, maka unsur kedua dalam array,
maka elemen ketiga dari array, sehingga menghindarkan kebutuhan
untuk melakukan notasi braket sedikit mengganggu persegi dan
$ I untuk indeks ke array.
PHP melakukan semua pekerjaan itu untuk Anda dan pada setiap iterasi
hanya tangan Anda elemen berikutnya dari array
tanpa Anda harus tahu tentang atau peduli tentang lokasi indeks numerik.
>> Dan kemudian terakhir, untuk saat ini, ada satu keistimewaan lain dari PHP
itu akan menjadi sangat berguna, terutama ketika kita mulai pemrograman di Web,
dan itu dikenal sebagai array asosiatif.
Array yang kita kenal sejauh ini per 20 detik yang lalu
dan selama 8 minggu terakhir secara numerik array diindeks,
semacam array tradisional di mana indeks adalah ints,
0, 1, 2, sepanjang jalan ke atas.
Array asosiatif jauh lebih kuat.
Mereka memungkinkan Anda untuk memiliki kunci sewenang-wenang,
sewenang-wenang indeks dan nilai-nilai sewenang-wenang.
Sedangkan dalam array tradisional itu 0, 1, 2,
dalam array asosiatif Anda dapat memiliki indeks
atau kunci foo yang nilainya bar.
Anda kemudian dapat memiliki kunci lain yang namanya baz dan yang nilainya qux.
>> Sekali lagi, ilmu komputer bodoh nama variabel generik di sini,
tapi intinya adalah bahwa array ini tidak memiliki braket 0 atau 1 braket.
Ini bukannya akan memiliki braket foo dan braket baz.
Ini jauh lebih fleksibel dalam bahwa kita akan dapat mengaitkan
kata dengan kata lain, kunci dengan nilai-nilai benar-benar sewenang-wenang,
dan kita akan bisa mendapatkan nilai-nilai kembali dalam waktu konstan
karena di bawah kap apa array asosiatif
benar-benar adalah adalah tabel hash.
Ingat bahwa tabel hash memungkinkan Anda untuk dimasukkan ke dalam beberapa masukan
seperti dimasukkan ke dalam kata David jika Anda ingin memasukkan David menjadi semacam kamus,
dan kemudian Anda mendapatkan kembali beberapa nilai biasanya.
Dalam kasus ejaan, benar atau salah.
David atau kata apa saja dalam atau tidak dalam kamus.
Array asosiatif adalah benar-benar hanya sebuah tabel hash,
tapi itu inkarnasi jauh lebih user friendly dari itu.
Seperti yang akan kita lihat, itu akan memungkinkan kita untuk melakukan beberapa hal
sangat, sangat mudah.
>> Mari kita lihat beberapa dasar PHP
contoh dan melihat apa yang bisa kita lakukan dengan bahasa ini.
Biarkan aku pergi ke depan dan membuka dalam direktori sumber kami hari ini
file bernama hello1.php.
File ini adalah komentar lebih dari itu adalah kode aktual,
jadi biar benar-benar menghapus semua komentar dari file
dan hadir untuk Anda mungkin sederhana PHP program yang tepat di sini.
5 baris, dan beberapa dari mereka adalah ruang putih,
jadi melihat beberapa perbedaan kunci di sini.
File ini disebut hello1.php.
Baris pertama, meskipun, adalah <? Php.
Semangat yang sama HTML,
bahwa urutan karakter memberitahu komputer
"Hei, komputer, inilah program kami di dalam PHP."
Itu membuat yakin itu tidak bingung bahwa itu beberapa bahasa lainnya.
Jalur 2 adalah sebuah ruang putih yang menarik.
Jalur 3 adalah teman lama kami printf,
kali ini dalam konteks PHP.
PHP memiliki versi sendiri printf yang berperilaku persis sama,
jadi ini hanya akan mencetak "halo, dunia."
Dan kemudian tag ini berlawanan di sini,>,? Berarti itu saja untuk kode PHP saya.
>> Mari kita lihat bagaimana menjalankan ini.
Aku akan kembali ke jendela terminal saya di sini.
Aku akan masuk ke direktori PHP saya.
Perhatikan bahwa kita memiliki sejumlah besar file, yang pertama dari yang hello.php.
Biarkan aku pergi ke depan dan menjalankan hello1.php,, masukkan.
Izin ditolak. Oke.
Bagaimana kita tetap hal-hal seperti ini di masa lalu?
Apa itu >> [respon siswa tidak terdengar]?
Kita perlu membaca dan menulis, tapi biarkan aku melakukan ls-l.
Ingat output ini agak samar dimana hello1
tampaknya dapat dibaca dan ditulis oleh saya
tapi dapat dibaca oleh orang lain.
Ternyata ini sebenarnya bukan merupakan langkah dalam arah yang benar.
Bedanya, sekali lagi, dengan bahasa ditafsirkan
adalah Anda tidak menjalankan program secara langsung.
Anda malah menjalankan penerjemah dan menyerahkannya kode
bahwa Anda telah menulis sehingga dapat menafsirkan baris demi baris.
Dalam hal ini, penafsir atau program saya benar-benar ingin menjalankan
secara harfiah disebut PHP.
>> Di suatu tempat pada hard drive alat ada program
orang lain aja disebut PHP, atau pada Windows php.exe.
Apa yang akan saya lakukan di sini adalah aku akan benar-benar menjalankan PHP
tapi memberikannya sebagai argumen baris perintah kode yang saya tulis,
dan kemudian saya akan tampilannya keluar dan tekan enter.
Ini berjalan program saya untuk saya, atas ke bawah, kiri ke kanan.
Biarkan aku pergi ke depan dan membuka varians sedikit ini.
Dalam pemberitahuan hello2.php bahwa ini juga
sebagian besar komentar, jadi biar menyingkirkan mereka sebagai selingan,
dan apa yang jelas berbeda sekarang tentang file ini?
Ada baris baru, agak samar di bagian atas.
Sejalan 1 itu #! / Bin / php.
Bin adalah sebuah konvensi di Linux dan Mac OS untuk biner,
sehingga / bin berarti ini adalah folder yang berisi sekelompok binari
yang diprogram, salah satunya adalah PHP.
The #! dijuluki shebang,
yang merupakan cara cepat untuk mengatakan hal itu, dan apa ini berarti
adalah bahwa ketika Anda menjalankan program ini sekarang ada petunjuk di bagian atas file
yang memberitahu komputer apa interpreter untuk digunakan.
>> Ia mendapat sedikit mengganggu jika Anda harus memberitahu pengguna Anda dan pelanggan Anda
"Hei, kita menulis program ini disebut hello1.php."
Semua harus Anda lakukan adalah selamanya menjalankan PHP dan kemudian nama dari program ini.
Terus terang, itu hanya akan lebih baik untuk menjalankan hello1.php,
dan memang, kita bisa jika kita melakukan hal berikut.
Biarkan aku pergi ke depan dan melakukan ls-l, dan pemberitahuan di hello2 itu masih saja membaca menulis
dan kemudian membaca membaca, jadi saya belum bisa melakukan hal ini, hello2.php.
Tapi kami memperkenalkan pernah begitu singkat terakhir kali, perintah chmod.
Jika saya melakukan chmod a + x, yang berarti semua executability ditambah,
dan kemudian hello2.php dan kemudian melakukan ls-l lagi melihat apa yang berubah.
Satu, Linux adalah menunjukkan kepada saya nama file di hijau untuk menyampaikan ide
bahwa eksekusi itu, tetapi yang lebih penting, di sisi kiri
perhatikan bahwa bit mewakili x untuk dieksekusi kini telah ditetapkan.
Apa ini berarti sekarang adalah saya bisa menjalankan ./hello2.php seperti biasa,
tekan enter, dan karena shebang di bagian paling atas dari file
itu petunjuk, lagi, untuk Linux yang mengatakan
menggunakan penerjemah ini untuk menjalankan file ini.
Jangan khawatir tentang memaksa pengguna untuk benar-benar mengetiknya.
>> Dan apa yang bagus sekarang adalah itu agak tidak relevan kepada pelanggan saya atau teman-teman saya
bahasa apa saya menulis program ini, jadi aku bisa pergi ke depan dengan mv
dan mengubah nama hal ini untuk hello2, misalnya.
Dan sekarang jika saya lakukan ./hello2
dan zoom out program saya terus berjalan.
Ini ekstensi file adalah konvensi manusia yang diperlukan
untuk sesuatu seperti dentang dan Membuat yang mencari mereka.
Tapi untuk PHP, saya bisa menyebutnya apa ekstensi file yang saya inginkan.
Aku bisa menipu dunia dengan berpikir bahwa aku benar-benar baik di Ruby,
dan aku bisa menulis hello2.rb dan kemudian menjalankan ini,
dan voila, sekarang saya memiliki versi Ruby, yang merupakan kebohongan yang lengkap.
Tapi ekstensi file yang berarti
jika file executable dan memiliki petunjuk ini khusus di bagian atas file.
>> Sekarang, sebagai samping, mari saya tunjukkan cepat versi 3,
yang merupakan semacam trik berguna untuk mengetahui.
Pada hello3 Saya melakukan sesuatu yang sedikit salah
bahwa saya akan memperbarui kode sumber secara online.
Dalam versi 3 ternyata pada komputer Linux yang paling
ada program yang disebut env untuk lingkungan,
dan apa yang dapat Anda lakukan di sini adalah jika Anda tidak tahu di mana PHP
diinstal pada hard drive lokal, karena memang bisa bervariasi berdasarkan komputer
bahwa seseorang menggunakan, env hanya mengatakan menjalankan env,
yang pada kebanyakan sistem, dan mencari tahu di mana PHP adalah.
Hanya trik umum sehingga Anda tidak perlu khawatir tentang mencari tahu di mana program ini.
Tetapi jika Anda melakukan perawatan untuk mencari tahu di mana program ini dan Anda belum peduli sejauh
Anda dapat menggunakan perintah yang.
>> Biarkan saya zoom out dan jenis yang php,
dan perhatikan ia memberitahu saya itu sebenarnya di usr / bin / php.
Ini semacam kebohongan. Hal ini juga di bin.
Ini hanya menunjukkan kepada saya hit pertama.
Jika Anda pernah bertanya-tanya di mana dentang adalah, yang dentang, yang di usr / bin / dentang,
yang membuat, usr / bin / membuat, dan apa artinya itu semua saat ini
Anda bisa saja mengetik usr / bin / dentang masuk untuk menjalankan dentang,
tapi itu agak membosankan untuk melakukan itu, sehingga beberapa folder
seperti usr / bin dan bin diasumsikan default
sehingga komputer tahu untuk mencari di dalamnya untuk Anda.
Setiap pertanyaan tentang menulis sebuah program, Dunia super super sederhana Hello
di PHP dan kemudian menjalankannya?
Karena sekarang kita akan mulai memperkenalkan sintaks lebih menarik.
Baiklah, di sini kita pergi.
Program-program yang telah kita lihat sebenarnya semua dari mereka sebelumnya.
>> Jika saya membuka, misalnya, mari kita lakukan beer1.php,
kami tidak akan pergi melalui beberapa versi ini, tapi apa yang saya lakukan
Aku sedang duduk dan menuangkan atau dikonversi
saya C kode untuk kode PHP di sini.
Sebagian besar atas file yang komentar di sini.
Ternyata ada satu fungsi baru kita perlu disebut readline.
GetString, recall, dari Minggu 0 seterusnya adalah hal CS50.
PHP datang dengan sendiri fungsinya user-friendly disebut readline
yang mengambil 1 argumen yang menentukan prompt
bahwa Anda ingin menunjukkan kepada pengguna, dan apa yang tidak readline
apakah mengembalikan apa pun pengguna jenis masuk
Dalam kasus ini, saya mendeklarasikan variabel yang disebut $ n.
Saya menyimpan di dalamnya nilai kembalinya readline
setelah mendorong pengguna dengan string ini.
Hanya untuk cadangan, untuk benar-benar menjalankan hal ini, biarkan aku pergi ke depan
dan menjalankan beer1.php php.
Berapa banyak botol akan ada? Mari kita lakukan 2 kali ini.
Enter. Itu saja.
>> Program ini secara fungsional identik dengan versi C dari minggu lalu.
Tapi sintaksis mari kita lihat apa yang berbeda.
Setelah saya mendapatkan int dari pemberitahuan pengguna bahwa aku melakukan beberapa pengecekan error,
dan jika n kurang dari 1 saya berhenti dan saya mencetak
pesan maaf kepada pengguna dan keluar dengan 1.
Ini juga sedikit berbeda.
Dalam C apa yang kita lakukan? Dalam C kami kembali 1.
Dalam PHP Anda keluar dengan 1, yang terus terang saya pikir adalah sedikit lebih intuitif
karena Anda benar-benar keluar dari program.
Baiklah, dan kemudian turun di sini lagu menjengkelkan identik sintaksis
kecuali untuk variabel, sehingga di sini di baris 24 dan seterusnya
perhatikan saya untuk loop hampir sama,
tapi aku punya $ di depan i dan n,
dan apa juga hilang dari baris 26 yang kita punya di masa lalu
ketika mendeklarasikan variabel saya?
Ada tipe no.
Hal ini tidak benar dalam PHP untuk mengatakan int.
Anda hanya tidak perlu melakukan itu.
Komputer, PHP interpreter cukup pintar untuk menyadari
bahwa jika Anda memasukkan nomor di $ Saya akan memperlakukannya
sebagai nomor Anda.
Dan kemudian turun di sini kita pasang di $ i, $ i, $ i - 1.
Semua itu adalah sama, dan kemudian turun di sini kita melakukan "Wow, itu mengganggu" printf
dan kemudian keluar (0).
>> Sekali lagi, takeaway di sini adalah bahwa meskipun kita akan menghabiskan relatif
sedikit waktu pada PHP, tentu versus apa yang kami lakukan pada C,
itu hampir sama, dan sebagainya yang akan kita lakukan hari ini dan minggu depan
dan seterusnya adalah fokus benar-benar pada beberapa ide-ide baru.
Hanya untuk melihat bahwa satu hal lain yang tidak menerjemahkan lebih dari C,
ini adalah sebuah program super sederhana yang kita lakukan di Minggu 1
atau 2 potong dadu yang nilai.
Tapi apa yang menarik pada saat tentang program ini adalah bahwa hal itu
memperkenalkan konsep fungsi kustom tertulis bahwa kita sendiri menulis.
Sintaks dalam PHP hampir sama.
Berikut program saya di bagian atas.
Perhatikan lagi absen adalah setiap gagasan utama.
Saya mulai menulis kode, dan ini adalah apa yang akan dieksekusi oleh interpreter.
Saya mencetak x sekarang 2, mungkin.
Lalu aku mengklaim cubing ...
Lalu aku memanggil fungsi kubus dan lulus dalam $ x
dan menetapkan nilai kembali ke $ x.
Kemudian saya mengklaim bahwa itu potong dadu, dan kemudian saya mengatakan ini, yang mudah-mudahan
akan mengatakan x sekarang 8.
Sintaks untuk fungsi di PHP pernah jadi sedikit berbeda.
Sekali lagi hilang adalah jenis kembali.
Sekali lagi hilang adalah jenis kembali dan juga hilang adalah jenis lainnya?
[Respon siswa tidak terdengar]
Well, oke, itu bagus. Mari kita kembali ke bahwa dalam kedua.
>> Kami tidak memiliki, misalnya, int sini.
Kami tidak, misalnya, telah int sini karena, sekali lagi, di PHP
Anda hanya tidak perlu dan tidak harus melakukan itu,
melainkan ada kata kunci ini baru yang disebut fungsi.
Di PHP itu hampir sedikit lebih jelas karena ketika Anda ingin fungsi
Anda benar-benar mengatakan fungsi, Anda memberikan nama dan kemudian daftar dipisahkan koma
jika ada argumen.
Tidak perlu mengatakan batal atau sesuatu seperti itu, dan kemudian kembali adalah sama,
$ * A * a $ $ a.
Yang juga hilang? Sammy menunjukkan hal ini di sini.
Pada bagian atas dari file-benar absen di PHP juga merupakan prototipe.
Ini juga adalah dengan desain.
Bahasa dan interpreter seperti PHP lebih pintar dari C pernah ada
dalam kompiler seperti dentang.
>> Ingat dentang itu, jika Anda tidak memberitahu bahwa ada kubus,
jika Anda tidak memberitahu bahwa ada sebagai printf dengan prototipe
atau dengan # include, baik, itu akan berteriak pada Anda dan bahkan tidak mengkompilasi kode Anda.
PHP dan bahasa yang lebih modern yang jauh lebih cerdas ketika datang ke ini.
Mereka akan mengambil itu atas diri untuk membaca semua kode Anda
dan kemudian berteriak pada Anda hanya jika menemukan tempat kubus.
Tidak masalah jika kubus di bagian bawah atau atas atau bahkan dalam beberapa file terpisah.
Bahasa PHP dan sejenis sekarang cukup cerdas untuk melihat ke depan
segala sesuatu sebelum deeming Anda sebagai telah membuat kesalahan.
Mana yang meninggalkan kita?
>> Mari kita lakukan salah satu contoh terakhir di sini dalam kondisi,
dan jika saya membuka pemberitahuan conditions2.php terlalu
sintaks di sini adalah hampir sama.
Saya menggunakan readline bukan GetString, tapi garis yang sama seperti sebelumnya,
"Saya ingin integer silakan."
Saya kemudian memiliki kondisi jika, else if, dan kemudian yang lain,
tetapi secara fungsional program ini juga identik dengan apa yang kami lakukan minggu lalu,
jadi jika saya menjalankan hal ini, php dari conditions2,
dan saya memberikan nomor seperti 23 -
Aku mengambil angka positif. Jika saya memberikan -1 saya memilih angka negatif.
Jika saya memberikan 0 Saya memang memilih 0.
Jadi siapa yang peduli tentang semua ini?
Nah, salah satu jenis latihan yang menyenangkan di sini
bagi saya setidaknya adalah untuk kembali dan melihat seberapa cepat saya bisa menerapkan pset 5,
yang pset salah ejaan.
Ingat bahwa ada file ini disebut speller.c,
dan ada file bernama dictionary.c.
Apa yang saya lakukan adalah saya agak menghabiskan beberapa menit dan saya dikonversi kode C
untuk kode PHP, dan kami tidak akan menghabiskan banyak waktu di ejaan
karena seperti di pset 5 Anda tidak benar-benar perlu
menghabiskan banyak waktu di ejaan sendiri karena perhatian Anda berada di kamus.
>> Cukuplah untuk mengatakan bahwa jika Anda membaca ejaan,
file ini di sini, itu cukup banyak setara dengan kode C
kami memberikan Anda untuk pset 5.
Saya baru saja menambahkan beberapa $ di tempat.
Aku sudah berubah nama fungsi tertentu jika mereka tidak ada di PHP.
Ada satu hal tambahan di sini, preg_match,
yang merupakan cara sedikit lebih menarik dari melakukan sesuatu, tapi kami akan kembali ke yang akhirnya.
Tapi singkatnya, ejaan hampir identik, dan jika Anda melihat di bagian paling bawah
apa yang akhirnya meludah keluar ini di sini,
kata yang salah eja, kata-kata dalam kamus, kata-kata dalam teks.
Baiklah, jadi apa yang menarik saat ini adalah sebagai berikut.
Pada bagian atas file saya, saya membutuhkan dictionary.php.
Sama seperti C # telah termasuk PHP memiliki fungsi khusus yang disebut membutuhkan
yang cukup banyak melakukan hal yang sama, memerlukan file bernama dictionary.php.
Bagaimana saya bisa pergi tentang pelaksanaan pset 5?
Biarkan aku pergi ke depan dan membuka file di sini.
Biarkan aku mengambil referensi kecil di sini.
Dan biarkan aku membuat file baru dan mulai memanggil dictionary.php ini.
Biarkan aku memasukkannya ke dalam folder lain sehingga kita bisa melakukan ini hidup.
Dan sekarang aku akan zoom in
Aku akan memulai file PHP saya dengan braket terbuka php ditutup braket.
Dan kemudian di sini ada beberapa fungsi yang saya butuhkan untuk mengimplementasikan untuk pset 5,
jadi biar mulai menerapkan beberapa dari mereka,
sehingga fungsi cek, yang harus mengambil sebuah kata dalam sebagai argumen.
Kami akan melakukan itu dan kembali ke sana dalam sekejap.
>> Ada fungsi beban, yang mengambil dalam apa sebagai argumen?
Kamus, sehingga file yang saya benar-benar ingin untuk memuat.
Ada fungsi ukuran, yang tidak mengambil argumen
dan ada fungsi-apa yang lain?
Membongkar, yang tidak mengambil argumen baik.
Ini adalah 4 fungsi bahwa saya akan perlu untuk mengimplementasikan sekarang di PHP,
dan apa yang akan saya lakukan adalah pergi ke depan dan melakukan hal ini.
Banyak dari Anda menggunakan tabel hash di pset 5,
jadi biarkan aku pergi ke depan dan membuat tabel hash di PHP.
Selesai.
Itu memberi saya sebuah tabel hash. Nah, mengapa?
Satu, variabel disebut $ meja, hanya untuk menyulap ide tabel hash.
Tanda kurung persegi, meskipun, mengingat, mewakili apa?
Array, tetapi dalam array PHP tidak harus diindeks secara numerik.
Mereka juga bisa menjadi array asosiatif,
yang berarti Anda dapat memiliki kunci sewenang-wenang dan nilai-nilai.
>> Banyak seperti di pset 5, Anda yang melakukan implementasi tabel hash
Anda mungkin dimasukkan kata dan kemudian dimasukkan ke dalam rantai daftar terhubung,
atau Anda menyimpan nilai suatu tempat benar atau sesuatu seperti itu.
Anda entah bagaimana mengingat fakta bahwa kata itu ada.
Untuk saat ini, itu akan menjadi tabel hash saya,
dan jadi sekarang untuk pergi tentang pelaksanaan fungsi cek
Saya hanya perlu melihat ke dalam itu tabel hash
dan melihat apakah kata ada.
Apa yang akan saya lakukan adalah aku akan mengatakan jika-
katakanlah isset, yang merupakan fungsi PHP yang benar-benar hanya berarti adalah set kunci,
sehingga isset ($ table [$ word],
dan jika demikian kembali benar.
Itu saja. Itu pset 5 di PHP.
Nah, dalam keadilan, oke.
Lain kembali palsu, sehingga tidak ada.
Apa yang sebenarnya terjadi di sini?
Nah, jika tabel-tabel hash atau di sini lebih umum-
adalah array asosiatif yang berarti Anda dapat mengindeks ke dalamnya
dengan kata seperti "kata," dan Anda harus mendapatkan kembali beberapa nilai.
>> Kami agak mendapatkan selangkah lebih maju dari diri kita sendiri.
Ini akan menjadi baik jika kita benar-benar dimuat file pertama,
sehingga beban tidak cukup sederhana, tapi biarkan aku pergi ke depan dan menyiapkan
implementasi sangat cepat dari beban.
Biarkan aku pergi ke depan dan mengatakan kata-kata mendapat kamus file.
Fungsi file dalam PHP membuka file
dan kembali kepada Anda sebuah array dari semua kata-kata dalam file tersebut,
hanya tangan mereka kepada Anda.
Itu adalah rasa sakit besar juga, bukan?
Sekarang foreach, ini adalah membangun baru, foreach ($ kata-kata $ kata).
Loop ini akan mulai iterasi kata Array
dan menetapkan ke variabel $ kata setiap kata dalam file
dari pertama ke kedua ke ketiga dengan cara seluruh keempat
jadi saya tidak perlu melakukan notasi [i] menjengkelkan dan sejenisnya.
Dan apa yang saya hanya akan lakukan untuk masing-masing kata
adalah menyimpannya di meja saya dengan pengindeksan ke dalam tabel
dan kemudian melakukan benar karena untuk mengingat
bahwa kata dalam kamus saya semua saya benar-benar harus melakukan
adalah jenis melempar sedikit dan mengatakan kata ini dalam tabel hash saya ada di sana, benar.
Dan jika itu tidak ada, saya tidak harus secara eksplisit menempatkan palsu,
kalau tidak saya akan harus meletakkan palsu untuk semua kata yang mungkin di alam semesta.
>> Cukuplah bagi saya hanya untuk menetapkan nilai indeks
true jika kata sebenarnya dalam tabel hash saya.
Sekarang, aku memotong beberapa sudut di sini bahwa saya akan melambaikan tangan saya di untuk saat ini,
tapi sekarang fungsi beban dilakukan.
Saya memuat semua kata-kata dari file ke dalam array.
Aku iterate atas array, dan untuk setiap kata dalam array
Saya pasang ke dalam tabel hash saya dengan 1 baris kode.
Ini menyenangkan. Anda tahu bagaimana kita dapat menerapkan ukuran sekarang?
Nah, ukuran selalu cukup mudah, dalam keadilan.
Di sini kita hanya dapat melakukan mengembalikan hitungan meja.
Itu cukup mudah juga, menghitung jumlah hal dalam tabel.
Itu sebenarnya semacam bukan yang paling efisien.
Saya mungkin harus memiliki ukuran yang disebut variabel sehingga kita bisa melakukannya
dalam waktu yang konstan, tapi itu cukup mudah.
Oh, dan kemudian membongkar, jika kita benar-benar ingin menjadi anal sini
kita dapat mengatakan bahwa cara Anda membongkar sesuatu.
Anda hanya mengatur variabel sama dengan array kosong,
dan itu akan menyingkirkan segala sesuatu yang ada di sana.
Tidak perlu menelepon gratis.
>> Sekali lagi, saya telah memotong beberapa sudut, dan saya mohon maaf atas sejumlah masalah menugaskan 5
mungkin di C, tetapi jika kita sekarang pergi ke depan dan menjalankan ini,
Aku akan benar-benar menjalankan versi yang saya tulis di muka
hanya agar aku tidak membuat kesalahan sintaksis apapun.
Biarkan aku pergi ke depan dan menjalankan ejaan. Penggunaan adalah sama.
Berikut adalah file kamus yang hanya berisi kata foo.
Berikut adalah file teks yang hanya berisi foo bar.
Mari kita periksa ejaan ini, sehingga ejaan, menggunakan file kamus pada file teks.
Ada satu kata yang salah eja, bar, dan voila.
Selesai dengan pset 5.
Mari kita istirahat 5 menit di sini, dan kami akan datang kembali dan lebih pada PHP.
Baiklah, kita kembali.
Mari kita lakukan-membenci saya untuk sementara waktu.
Mari kita sekarang benar-benar melihat apakah ini bukan positif
benar-benar menerapkan hal ini di PHP.
Memang, butuh waktu 45 detik untuk melaksanakan.
>> Tapi mari kita lanjutkan sekarang dan menjalankan hal-hal.
Biarkan aku pergi ke depan dan menjalankan versi C
dari ejaan, dan kami akan menjalankannya pada salah satu file terbesar,
yang merupakan King James Bible.
Dan bahwa di sini adalah di-mari kita masuk ke folder C kami,
ejaan pada King James tanggal 5.
Banyak kata yang salah eja.
Oke, jadi itu output Anda mungkin punya bahkan jika waktu yang sedikit berbeda,
jika Anda mendapatkan semua yang bekerja dengan benar, sehingga secara total waktu untuk memeriksa ejaan
Alkitab King James adalah .38 detik, sehingga cukup baik menggunakan implementasi tersebut.
Sekarang biarkan aku pergi ke versi PHP, yang kita baru saja menulis.
Biarkan saya jalankan ejaan pada King James.
Whoops, mengabaikan kesalahan itu. Saya di direktori yang salah.
Speller di King James tanggal 5.
Hampir selesai.
>> Oke, pengamat yang cerdik akan menyadari bahwa itu lebih dari 3 detik di sana.
Itu adalah waktu yang berjalan benar.
Ternyata bahwa dibutuhkan waktu untuk meludah banyak teks keluar
karena buffer masalah, tapi cerita panjang pendek,
itu 3,15 detik dari waktu mesin, CPU time,
versus apa itu beberapa saat yang lalu?
Seperti .3.
Maksudku, itu urutan besarnya lebih lambat, jadi di mana adalah bahwa
perlambatan konyol datang dari?
Nah, seperti yang telah terjadi dengan sebagian besar keputusan desain yang kita buat
di kelas selama 9 minggu terakhir hampir selalu ada tradeoff ini.
Kadang-kadang hanya ruang antara, kadang-kadang antara ruang dan waktu,
ruang, waktu dan usaha pengembangan, dan memang di sini, meskipun
kami menyelamatkan sejumlah besar waktu, mungkin berpotensi 10-20-30 jam
waktu pengembangan menerapkan spell checker
oleh kambing itu hanya dalam 45 detik dengan bahasa ini
harga yang kami bayar adalah bahwa itu adalah urutan besarnya lebih lambat sebagai hasilnya,
dan ini umumnya terjadi dengan hampir semua bahasa ditafsirkan,
PHP, Python, Ruby, Pearl atau orang lain dimana
jika Anda akan menjalankannya melalui seorang penerjemah dan memilikinya membaca kode Anda
baris demi baris, atas ke bawah, kiri ke kanan,
bahwa perantara akan mengambil beberapa waktu sendiri,
dan apa yang Anda rasakan di sini di 3 detik sebagai lawan .3 detik
adalah kenyataan bahwa ada perantara ini yang harus benar-benar menginterpretasikan kode kita
baris demi baris, dan Allah melarang jika Anda dalam lingkaran
dengan file besar yang berisi ratusan ribu kata.
>> Itu overhead akan menambah dan menambah dan menambah dan menambah.
Untuk alat seperti ini mungkin bukan bahasa terbaik untuk menggunakan untuk melaksanakan
spell checker jika kedekatan yang menarik bagi pengguna Anda dan untuk Anda.
Tapi mewah yang kita miliki dalam beberapa saat adalah jika Anda
menggunakan bahasa seperti PHP atau banyak bahasa ditafsirkan
dalam konteks Web, dalam hal ini, Anda memiliki manfaat
bahwa internet jauh lebih lambat dari kebanyakan komputer.
Anda memiliki CPU GHz di komputer Anda, 2 GHz, bahkan mungkin lebih hari ini.
Tetapi kenyataannya adalah di internet ada sejumlah tinggi latency
dimana untuk browser untuk berbicara dengan server, meskipun kita lihat minggu lalu
bahwa itu cukup cepat, setengah milidetik atau lebih,
itu juga menambahkan sampai, dan jika Anda men-download hal-hal seperti gambar
atau foto atau Facebook mendapatkan pesan instan melalui obrolan Facebook,
GChat atau sejenisnya, semua round-trip kali
antara browser dan mulai server untuk menambah,
yang membuat pilihan tertentu Anda bahasa dalam banyak kasus
tidak semua yang relevan, sehingga Anda baik-baik saja menggunakan bahasa yang sedikit lebih lambat
seperti PHP atau Python atau Ruby
tapi untuk yang ada upsides besar untuk Anda dan rekan Anda
dan teman-teman Anda karena Anda dapat menerapkan hal-hal begitu, jauh lebih cepat.
Dan selain itu, Anda memiliki risiko jauh lebih sedikit dari kelemahan keamanan tertentu.
Tidak ada pointer di PHP.
Tidak ada kesalahan seg bahwa Anda dengan mudah dapat menginduksi
dengan cara yang sama Anda bisa di C.
Dengan C Anda super dekat dengan perangkat keras.
Dengan bahasa PHP dan mirip Anda semacam tingkat yang lebih tinggi, sehingga untuk berbicara,
dengan banyak pertahanan antara Anda dan apa yang sebenarnya terjadi
dalam mesin, dan itu hanya sebuah tradeoff.
>> Kami telah sampai pada titik memiliki ini, lebih modern bahasa tingkat tinggi
seperti PHP karena pelajaran dalam bahasa seperti PHP di C.
Tapi jika Anda tidak mengerti apa yang telah terjadi di bawah tenda sepanjang waktu ini
Anda pasti tidak dapat membuat keputusan desain yang tepat,
dan tentu ketika datang untuk bekerja di tempat seperti Facebook atau Google
atau tempat-tempat yang semakin bermain dengan set data besar
bahkan jika Anda kembali dan jangan premed dan bekerja dengan MD beberapa
pada beberapa data yang besar yang melibatkan pasien dan dokter
dan seperti menggunakan alat yang tepat adalah sangat menarik
karena jika analisis Anda dari beberapa kumpulan data mungkin mengambil detik,
atau secara harfiah mungkin memakan waktu beberapa jam.
Ini hanyalah satu contoh, tidak untuk menggagalkan Anda dengan usaha berapa banyak lagi
itu di C tetapi untuk membantu Anda menghargai bahwa ketika Anda menerapkan sesuatu di C
Anda benar-benar mengerti, atau dalam teori, benar-benar memahami
bagaimana segala sesuatu atau harus bekerja, dan Anda memiliki kontrol hampir penuh
atas apa yang terjadi di bawah kap mesin, dan dengan bahasa tingkat tinggi
Anda harus melepaskan kontrol lebih kepada orang-orang yang menemukan mereka
dan tunduk lebih untuk keputusan desain mereka dari Anda.
Tetapi jika kita mengambil begitu saja bahwa kinerja
tidak cukup penting di Web karena isu-isu lainnya,
hanya kecepatan jaringan yang sedikit lebih lambat dari kecepatan CPU pula,
sehingga kita bisa semacam mampu menggunakan bahasa sedikit lebih lambat
jika upsides kita dapat mengembangkan hal-hal 10 kali lebih cepat atau bahkan lebih.
>> Mari kita lihat bagaimana kita bisa mulai menggunakan ini.
Biarkan aku pergi ke folder
salah satu contoh saat ini disebut frosh.ims,
dan ini benar-benar secara pribadi termotivasi oleh fakta bahwa hal pertama
Saya menulis untuk Web tahun lalu setelah mengambil CS50 CS51 dan
adalah sebuah website untuk program IM Frosh, mahasiswa olahraga intramural,
yang pada saat ini adalah tahun yang cukup lalu bahwa pada saat
tidak ada website untuk program ini, meskipun ada sebuah web,
dan sebaliknya ada pengawas di Wigglesworth dimana jika Anda ingin
untuk mendaftar untuk voli atau sepak bola atau apa pun yang Anda akan mengisi secarik kertas.
Anda kemudian akan berjalan melintasi halaman.
Anda kemudian akan mengetuk pintu mereka dan geser di pintu mereka atau tangan untuk pengawas
secarik kertas dengan nama Anda di atasnya, apakah Anda ingin menjadi kapten tim,
apa olahraga Anda ingin lakukan, dan apa asrama Anda masuk
Itu adalah semacam cara sekolah tua dalam melakukan sesuatu, dan ini adalah perdana
kesempatan untuk mengotomatisasi banyak proses ini.
Anda hanya pergi ke situs web. Anda mengetik sesuatu masuk
Anda mendapatkan email konfirmasi, dan boom, Anda sudah selesai.
>> Ini adalah hal pertama yang saya lakukan, meskipun dalam bahasa yang disebut Pearl,
tapi itu relatif mudah untuk dilakukan di PHP, dan ini adalah semacam perwakilan
dari masalah yang Anda dapat mulai memecahkan ketika Anda dapat mengekspresikan diri
pemrograman dan tidak harus bergantung pada hal-hal seperti situs Google
atau Excel atau alat yang diberikan kepada Anda.
Kalian sekarang memiliki kemampuan untuk melakukan hal-hal seperti ini.
Ini adalah versi jelek super formulir,
tetapi mari kita hanya menggunakannya untuk awal percakapan dimana hal ini
kira-kira apa bentuk tampak seperti tahun yang lalu bagi kita
untuk memungkinkan orang di Web untuk mendaftar Frosh IM.
Kami meminta nama, kotak centang untuk apakah atau tidak mereka ingin menjadi kapten,
laki-laki atau perempuan, dan kemudian apa yang mereka berada di asrama,
dan kemudian mereka akan mengirimkan formulir ini.
Mari kita melihat pertama di bawah kap pada HTML yang mewakili halaman web ini.
Biarkan aku pergi ke froshims0,
dan sebagai samping, untuk pset 7 saya mengambil untuk diberikan
direktori dan folder yang saya meletakkan hal-hal masuk
Kami akan memandu Anda melalui persis di mana barang-barang harus pergi pada alat,
yang perintah mod Anda harus menjalankan, jadi jangan khawatir tentang semua
rincian bodoh sinkronisasi dalam dari get-pergi di sini.
>> Baiklah, inilah froshims0.php.
Biarkan saya scroll ke bawah, dan apa yang ingin tahu di sini,
ini adalah file PHP, tapi apa di dalamnya, jelas?
Ini banyak seluruh HTML, dan memang, PHP asal
benar-benar adalah untuk menjadi bahasa web-sentris.
Sesaat lalu kita menggunakannya untuk mengimplementasikan contoh bir,
kondisi contoh, contoh halo, dan itu baik-baik saja.
Anda dapat menggunakan PHP sebagai bahasa scripting
di mana script benar-benar hanya nomenklatur yang diberikan kepada program cepat dan kotor
atau sesuatu yang Anda menulis dalam bahasa yang ditulis atau lebih umumnya ditafsirkan.
PHP super berguna untuk itu karena Anda telah melihat seberapa cepat
relatif kita dapat menyiapkan program di PHP.
Tapi itu benar-benar dirancang untuk digunakan untuk Web,
dan dirancang untuk Web dalam arti bahwa perhatikan di sini di bagian atas file
Saya mulai dengan <? Php.
Lalu aku memiliki banyak komentar berguna, diberikan, tapi kemudian aku menutup modus PHP.
Tapi kemudian saya jatuh ke modus HTML.
>> Yang menarik dari PHP adalah meskipun file berakhiran. Php
itu umumnya dimaksudkan untuk menjadi co-bercampur dengan HTML,
beberapa kode PHP, HTML beberapa.
Dan kita akan melihat bahwa pada akhirnya kita dapat mulai menggoda mereka terpisah
dan tetap terpisah HTML kami dari PHP kami sama sekali,
tetapi asal-usul PHP benar-benar adalah untuk memberikan fleksibilitas ini,
bahwa jika Anda ingin beberapa HTML hanya menulis, dan itu akan
meludahkan identik ke browser.
Tapi jika Anda membutuhkan beberapa teknik pemrograman,
beberapa kode pemrograman, Anda juga dapat memasukkannya ke dalam file yang sama persis, seperti yang kita akan segera melihat.
Berikut HTML saya.
Aku punya judul ini untuk Frosh IM.
Aku punya tag tubuh yang telah mendapat beberapa CSS di atasnya untuk semua pusat di tengah,
dan kemudian turun di sini saya memiliki bentuk yang tampaknya akan disampaikan
ke file baru yang disebut register0.php, jadi kita akan melihat bahwa dalam sekejap.
Ini menggunakan metode yang disebut pos, yang kita akan kembali ke juga.
Lalu aku memiliki input beberapa bentuk, satu nama yang disebut, yang jenis teks,
yang namanya adalah kapten, yang jenis kotak centang,
dan ini, kami belum melihat itu sebelumnya, tapi itu tidak persis apa yang dikatakannya.
Anda akan mendapatkan kotak centang bukan kotak teks.
Di sini Anda memiliki tombol radio, yang merupakan salah satu dari tombol-tombol melingkar
bahwa Anda juga dapat memilih ini atau yang itu.
>> Perhatikan itu disengaja yang saya berikan kedua tombol radio nama gender.
Ini adalah bagaimana Anda mendapatkan mutual exclusion dimana Anda harus mengklik
baik ini atau yang itu, dan dengan mengklik yang lain
itu unchecks yang lain, sehingga Anda harus memberi mereka nama yang sama
jika Anda ingin mereka menjadi saling eksklusif seperti itu.
Dan kemudian untuk asrama, saya tidak berpikir kita pernah melihat ini, tapi itu adalah menu pilih, menu drop-down.
Tag untuk itu adalah pilih.
Anda kemudian memberikan menu drop-down nama,
dan kemudian Anda memiliki sejumlah besar pilihan ini.
Yang pertama, hanya untuk estetika, adalah string kosong.
Saya hanya ingin drop down menjadi kosong secara default,
dan kemudian ada Apley, Canaday, Grays, dan sebagainya.
Dan perhatikan dikotomi di sini.
Pilihan dalam menu drop down memiliki nilai,
tapi kemudian ia memiliki nama manusia-ramah, yang dalam contoh ini
adalah identik, tetapi jika kita benar-benar ingin menjadi anal kita bisa memiliki
nilai penurunan ini turun hanya menjadi versi singkat,
Abu-abu, tapi kami benar-benar bisa mengatakan Grays Balai bahwa manusia benar-benar melihat,
tapi itu tidak semua yang menarik, jadi aku hanya terus itu sederhana dan membuat mereka identik.
Kemudian turun di bawah kita memiliki tombol submit
yang telah kita lihat sebelumnya, tapi perhatikan aku hanya memberikannya sebuah kata yang berbeda.
Alih-alih CS50 pencarian saya berikan label "Daftar."
>> Hasil akhirnya adalah halaman web ini di sini, dan lagi,
di mana hal ini bisa diserahkan kepada?
Ini akan disampaikan kepada beberapa file, nilai atribut aksi,
yang register0.php.
Mari kita lihat apa yang sebenarnya terjadi di sini.
Biarkan aku pergi ke depan dan mengisi formulir ini, mengatakan David,
laki-laki, Matthews, dan kemudian aku akan mengatakan mendaftar.
Biarkan saya zoom out dan klik mendaftar.
Oke, jadi agak tidak berguna, tapi mari kita lihat apa yang sebenarnya terjadi.
Perhatikan bahwa URL telah berubah menjadi register0.php.
Apa anehnya absen dari URL, meskipun, meskipun kita hanya mengajukan formulir?
[Respon siswa tidak terdengar]
Oke, itu hanya menjadi pengguna Chrome ramah hari ini.
Itu benar-benar ada. Mereka hanya menyembunyikannya untuk menghemat ruang.
Tapi baik pikiran, pikiran yang baik.
Menjelang ujung URL, meskipun, apa yang hilang? Ya.
[Mahasiswa] The string query.
Query string, jadi ingat dari contoh sederhana kami pencarian Google.
Segera setelah saya klik tombol submit URL
membawa saya ke Google, tapi kemudian ada q =? ilmu komputer atau apa pun yang saya telah diketik masuk
Itu karena kami menggunakan metode get dengan contoh pencarian.
>> Kali ini kita menggunakan metode apa, bukan?
Posting, dan salah satu perbedaan langsung
antara mendapatkan dan posting adalah posting yang tidak menempatkan masukan pengguna dalam URL.
Ia menyembunyikan hal itu. Masih mengirimkannya.
Pada kenyataannya, apa yang kita lihat dalam browser di sini, seperti yang kita akan mengungkapkan dalam beberapa saat
dengan melihat register0, adalah aku hanya melihat isi
dari array yang diajukan dari browser ke server.
Tetapi URL tidak memiliki? Yang, tidak memiliki kata kunci
atau nilai-nilai di dalamnya, dan mengapa demikian?
Nah, posting memungkinkan Anda untuk tetap mengirimkan data dari formulir ke server,
tetapi tidak memasukkannya ke dalam URL, jadi apa jenis informasi adalah posting
sangat cocok untuk mungkin ketika Anda meminta pengguna untuk
ketik masukan ke form?
Sesuatu seperti password, sesuatu seperti apa lagi?
Nomor kartu kredit.
Apa pun yang agak sensitif Anda mungkin tidak ingin berakhir di URL
jika hanya karena itu berarti teman sekamar Anda atau anggota keluarga hanya bisa troll melalui
Anda sejarah internet dan kemudian benar-benar melihat password Anda,
harfiah melihat nomor kartu kredit Anda karena kebanyakan browser
ingat dalam sejarah apapun URL Anda sudah berada di,
jadi jika hanya karena itu akan menjadi ide yang buruk.
Menggunakan menyembunyikan posting yang detail dari pengguna.
>> Juga, bagaimana Anda meng-upload foto ke Facebook?
Nah, hanya 2 mekanisme Anda benar-benar dapat digunakan,
meskipun ada beberapa yang lebih misterius lainnya, adalah mendapatkan dan posting.
Bagaimana Anda mungkin meng-upload foto melalui URL?
Anda benar-benar bisa melakukannya.
Anda dapat mengambil JPEG atau bitmap atau GIF dan Anda dapat mewakili dalam heksadesimal
atau sesuatu yang disebut basis 64.
Alih-alih basis 16 menggunakan basis 64, yang pada dasarnya terlihat seperti
Karakter ASCII, dan Anda benar-benar dapat meng-upload foto melalui URL
setelah tanda tanya, tapi biasanya ada batas ukuran.
Kebanyakan browser memaksa URL menjadi tidak lebih dari 1.000 karakter,
mungkin 2.000 karakter atau sejenisnya, sehingga Anda tidak dapat meng-upload
10 MB Facebook foto.
Untuk itu Anda menggunakan pos juga, jadi untuk saat ini mendapatkan menempatkan parameter dalam URL,
yang bagus dan berguna kadang-kadang, tapi untuk sesuatu yang sensitif atau besar
posting adalah cara untuk pergi.
Apa yang sebenarnya register0 lakukan di sini?
Nah, jika saya membuka register0 pemberitahuan bahwa ini adalah halaman super sederhana,
tapi itu menunjukkan fakta bahwa saya bisa bersama-berbaur, untuk lebih baik atau lebih buruk,
HTML dengan PHP.
Ini seluruh file, kecuali untuk komentar di atas, adalah HTML
kecuali untuk orang ini di sini.
>> Perhatikan di tengah-tengah kode PHP saya,
di tengah-tengah HTML saya, saya memiliki semacam sementara
memasuki modus PHP.
Saya memanggil fungsi khusus yang disebut cetak r.
Ini berarti mencetak rekursif, dan apa yang dilakukannya itu rekursif mencetak
apapun variabel yang Anda serahkan, koma, keluar PHP modus.
Dan tag pre memberikan pra-diformat teks,
mono teks ruang sehingga setiap ruang Anda benar-benar melihatnya.
Itu tidak hilang. Apa posting?
Nah, apa yang menarik dan menarik tentang PHP
adalah bahwa setiap kali Anda mengirimkan formulir menggunakan get atau post
apa pun yang disampaikan kepada Anda oleh browser
PHP sendiri angka apa yang pasangan nilai kunci,
angka keluar jika ada tanda-tanda yang sama, angka tahu apakah ada tanda tanya.
Ia melakukan semua kerja keras untuk Anda, dan kemudian tangan Anda sebuah array asosiatif
mengandung segala sesuatu yang diketik pengguna ke dalam formulir.
Nah, bidang apa yang formulir ini miliki?
>> Itu 4 bidang.
Salah satunya adalah kolom teks yang disebut nama.
Salah satunya adalah kotak centang yang disebut kapten.
Salah satunya adalah tombol radio yang disebut gender,
dan satu adalah menu drop-down yang disebut asrama,
jadi perhatikan ketika saya mencetak rekursif
isi dari variabel khusus.
Ini adalah variabel global khusus yang disebut harfiah $ _POST, dalam semua topi.
Ini adalah variabel global PHP khusus yang hanya menciptakan untuk Anda
dan tangan Anda sehingga Anda dapat mengakses segalanya
yang disampaikan melalui bentuk oleh pengguna.
Dan dengan menelepon r cetak pada hal-Anda tidak akan melakukan hal ini dalam aplikasi normal.
Kami melakukan ini untuk melihat dalam variabel ini,
dan apa yang di dalamnya, baik, 4 kunci,
4 http parameter, sehingga untuk berbicara,
Nama, kapten, jenis kelamin, asrama, dan kemudian nilai-nilai bahwa pengguna
diketik dengan satu pengecualian.
Aku tipe D-A-V-I-D.
Aku memeriksa kotak, meskipun, untuk laki-laki, yang tampaknya mengajukan nilai
hanya m menjadi ringkas.
>> Ketika saya memilih Matthews itulah nilai yang mendapat dipilih,
dan yang satu ini sedikit bodoh, tapi itu konvensi tersebut.
Ketika saya memeriksa kotak, nilai pada, "pada," diajukan untuk mendapat kotak centang.
Jika saya tidak memeriksa itu, tidak ada nilai akan dikirim apapun.
Ini hanya memberi kita wawasan ke dalam apa yang ada di dalamnya dari variabel global khusus,
dan itu begitu istimewa bahwa itu disebut variabel global super.
Itu ada di mana-mana untuk Anda dalam kode Anda sehingga Anda benar-benar dapat mengaksesnya.
Ini bukan yang menarik, jadi mari kita benar-benar menggunakan global Super
dan benar-benar mencoba untuk mendaftarkan seseorang.
Pada froshims1 Aku akan membuat satu perubahan.
Saya mengubah tindakan menjadi register1.php,
dan aku melakukan satu hal lainnya.
Aku agak malu oleh kualitas halaman web saya di sana.
Ini cukup mengerikan, jujur, jadi ternyata
yang dapat Anda gunakan dengan sangat mudah di Web
orang lain kode JavaScript, orang lain CSS
bahwa mereka telah menulis dan open source dan tersedia sebagai perpustakaan,
sehingga untuk berbicara, dan misalnya, di sini saya menggunakan perpustakaan tersedia secara bebas,
sekelompok kode yang orang lain menulis.
>> Twitter terjadi untuk menulis kode ini, dan itu disebut perpustakaan bootstrap,
dan itu hanya sekelompok style sheet CSS, sekelompok. file css
bahwa orang lain menulis dan menemukan cara untuk mendapatkan semuanya bagus dan cantik
sehingga orang-orang seperti kita bisa khawatir sedikit kurang tentang estetika dan fokus lebih
pada logika dan pemrograman yang sebenarnya.
Dengan menghubungkan dalam dengan tag, yang merupakan tag yang sama saya gunakan untuk ingat styles3.css sebelumnya,
Saya sekarang memiliki akses ke file bernama bootstrap.min.css.
Min hanya berarti mereka telah minified dan mereka telah membebaskan semua ruang putih dan sebagainya
hanya untuk memastikan mereka tidak mengirimkan saya byte lagi daripada yang saya benar-benar membutuhkan.
Tapi di sana adalah sejumlah besar CSS, jadi jika sekarang saya membuka versi 1 dari Frosh IM
melihat bahwa file saya pasti cantik.
Sekarang itu masih hanya hitam dan putih, tetapi perhatikan bahwa dengan hanya menggunakan lembar gaya mereka
dan menggunakan fitur tertentu pada formulir saya itu tidak luar biasa,
tapi itu pasti lebih bersih daripada sebelumnya, dan proyektor tidak melakukannya keadilan.
Ada garis-garis abu-abu kecil di sekitar tombol dan sekitar kolom teks di sini,
tapi itu pasti lebih bersih daripada sebelumnya.
>> Sekarang, dalam keadilan, saya harus mengubah markup saya sedikit.
Ini adalah versi 1, dan melihat bahwa saya telah menggunakan tag baru beberapa,
dan jujur, aku tidak tahu bagaimana melakukan ini sampai saya membaca dokumentasi
untuk perpustakaan bootstrap Twitter, dan mereka mengatakan kepada saya jika Anda ingin menggunakan perpustakaan kami
menggunakan elemen fieldset dalam formulir Anda,
menempatkan kata yang Anda ingin menunjukkan sebelah dalam bidang tag label,
kemudian memberikan masukan nama Anda, seperti sebelumnya,
dan kemudian untuk kotak centang, anda tidak hanya membungkusnya dalam elemen label,
Anda menggunakan sesuatu yang disebut kelas, jadi kami belum melihat ini sebelumnya,
tetapi Anda akan melihat ini di salah satu celana pendek pset 7 itu.
Sebuah kelas di CSS memungkinkan Anda melakukan sesuatu yang sangat mirip dengan ID,
tapi sebelum ketika kita memiliki ID dengan simbol #
itu untuk satu dan hanya satu elemen.
Apa yang baik tentang kelas adalah bahwa beberapa elemen dapat memiliki kelas yang sama
atau hal-hal CSS yang sama diterapkan untuk itu.
>> Tapi sekali lagi, lebih pada mereka dalam jangka pendek, dan sisanya dari ini hanya copy dan paste
dari dokumentasi mereka di mana saya telah menambahkan label di sana-sini.
Dan pada akhirnya, karena saya telah menyertakan tag link di atas,
semuanya terlihat cantik otomatis
dengan hanya memiliki mark up halaman saya dengan cara yang
Twitter diharapkan, dan ada berbagai cara
melakukan hal ini, dan ini memang sangat tepat.
Pada titik ini dalam semester, seperti yang Anda akan melihat di spec pset 7 ini,
Googling sekitar, membaca di perpustakaan, menggunakan orang lain CSS
dan JavaScript untuk memecahkan masalah tambahan
untuk sejumlah masalah sendiri tentu didorong dan jalan
Web dibangun hari ini, dengan berdiri di atas bahu orang lain
sehingga Anda dapat benar-benar fokus pada masalah baru dan menarik.
Tapi mari kita sekarang fokus pada, sekali lagi, logika.
>> Itu jalan memutar cepat pada estetika hanya untuk menunjukkan arah di mana Anda dapat pergi.
Aku akan kembali ke yang jelek satu untuk sekarang hanya karena
tidak ada gangguan dengan barang-barang Twitter, dan biarkan aku pergi ke depan dan membuka
froshims2, yang, sekali lagi, hanya berbeda dalam register2.php, tindakan,
dan mari kita lihat apa efeknya di sini.
Biarkan aku pergi ke depan dan ketik di David.
Saya tidak akan menjadi kapten saat ini.
Aku akan mengatakan laki-laki, Matthews, mendaftar.
Sialan. Oke, itu sebuah sekrup di bagian saya.
Stand by.
Register2, baris 22, jika kosong atau-maaf.
Mari kita ulang.
Oke, setelah mengirimkan formulir ini apa yang baru saja terjadi?
Saya mengetik David, diperiksa pria, diklik Matthews, mendaftar.
Anda terdaftar. (Yah, tidak benar-benar.)
Ini jelas merupakan langkah lebih hanya mencetak isi dari beberapa variabel,
tapi apa yang benar-benar melakukan file ini?
Dalam register2.php
melihat bahwa saya memiliki beberapa kode baru.
Dalam tag tubuh saya, saya memiliki dasarnya jika lain membangun,
tapi karena aku co-berbaur ini dengan beberapa HTML
Aku harus masuk dan keluar dari mode PHP bolak-balik, jadi mari kita lihat apa yang saya lakukan.
>> Pada baris pertama di sini saya katakan jika itu terjadi
bahwa pos super global kosong untuk kunci nama,
jadi dengan kata lain, jika pengguna tidak memberikan nilai untuk nama dalam bentuk,
kemudian kosong akan kembali benar karena nilai kosong.
Atau-perhatikan vertikal bar-jika gender kosong
dalam hal ini global yang super khusus, yang, sekali lagi, merupakan isi formulir,
atau asrama kosong, maka aku akan pergi ke depan dan berteriak pada pengguna.
Bagaimana? Nah, perhatikan aku akan mengatakan Anda harus mencantumkan nama, jenis kelamin, dan asrama.
Mari kita benar-benar menimbulkan kesalahan itu.
Biarkan aku pergi kembali ke bentuk saya. Mari saya ulang untuk membersihkannya.
Dan aku hanya akan memberi mereka David, dan mereka tidak perlu tahu di mana aku tinggal.
Daftar. Ternyata saya harus memberitahu mereka di mana saya tinggal.
Anda harus mencantumkan nama, jenis kelamin, dan asrama. Kembali.
>> Dan saya bisa klik untuk kembali ke bentuk itu, tapi kenapa begitu?
Nah, dalam kasus bahwa nama itu tidak kosong, tapi gender, dan asrama itu,
jadi ini seluruh ekspresi dievaluasi ke true, dan meskipun sintaks yang sedikit baru,
lagi, kita memasuki modus PHP, akrab jika pernyataan,
tetapi bagian baru di sini hanya usus ini, dan saya telah mengacaukan dengan menghilangkan kurung
oleh kecelakaan, tetapi perhatikan usus besar, dan itu berarti
meskipun kita sedang keluar semua modus PHP
yang mengikuti harus meludahkan verbatim ke browser
sampai Anda melihat blok yang lain, seperti yang kita lakukan di sini,
dalam hal ini Anda malah harus meludah keluar ini
sampai Anda melihat endif, sehingga beberapa sintaks yang sedikit baru
yang memungkinkan saya untuk beralih antara HTML dan PHP.
Kita dapat membersihkan ini akhirnya, tetapi untuk sekarang,
itu semacam cara menarik kesalahan memeriksa formulir.
>> Sekarang, saya mengatakan Anda tidak benar-benar terdaftar karena jelas kami telah melakukan apa-apa kecuali data,
jadi mari kita benar-benar mencoba untuk melakukan sesuatu yang keren.
Pada froshims3 satunya perbedaan adalah aku akan tunduk register3,
sehingga HTML yang ada adalah sama.
Pada register3 melihat ini.
Ini adalah jenis seksi.
Di bagian atas saya menggunakan pernyataan membutuhkan, jadi ini seperti # include.
Kali ini bukan stdio.h atau sesuatu seperti itu.
Ini adalah perpustakaan PHP, dan yang satu ini disebut PHPMailer.
Bagaimana saya tahu untuk menyertakan justru string yang dikutip?
Saya membacanya dalam dokumentasi, jadi ketika mereka mengatakan kepada saya menempatkan ini di bagian atas file
jika Anda ingin menggunakan sebuah perpustakaan khusus yang disebut PHPMailer yang melakukan apa yang dikatakannya.
Hal ini memungkinkan Anda untuk mengirim email melalui PHP.
Sekarang mari kita gulir turun lebih lanjut.
>> Perhatikan untuk memulai aku dalam mode PHP ini sepanjang waktu,
jadi sekarang perhatikan di sini setelah mengimpor perpustakaan itu,
sehingga untuk berbicara, saya melakukan beberapa pemeriksaan.
Jika itu terjadi bahwa nama tidak kosong
dan jenis kelamin tidak kosong-perhatikan tanda seru-
dan asrama tidak kosong, maka pengguna telah logis mengisi formulir, setidaknya cukup.
Saya tidak peduli jika mereka kapten atau tidak. Aku hanya perlu nama, jenis kelamin, dan asrama.
Jika mereka telah mengisi mereka sehingga tidak ada bidang-bidang yang kosong
ini sedikit sintaks baru.
PHP, sebagai samping, adalah bahasa pemrograman berorientasi obyek
yang sebagian dari kalian mungkin ingat dari APCS atau sejenisnya.
Untuk saat ini, jika asing, hanya tahu bahwa untuk menggunakan perpustakaan ini
Anda harus menulis baris kode seperti ini menggunakan kata kunci baru,
harfiah kata kunci baru yang disebut baru.
Tapi lebih dari itu, kami memiliki beberapa sintaks akrab.
Ini operator panah, yang mirip dengan apa yang kita digunakan untuk structs dalam konteks pointer.
Untuk saat ini PHP tidak memiliki pointer,
tapi tahu sekarang bahwa dalam variabel email
pada dasarnya jenis pointer ke perpustakaan khusus
bahwa orang lain menulis, dan jika saya ingin mengakses fungsi tertentu
dalam perpustakaan yang saya lakukan, seperti di C, gunakan operator panah,
meskipun hal ini tidak benar-benar pointer.
Ini semacam versi sendiri PHP daripadanya.
Ini berarti pergi ke perpustakaan dan memanggil fungsi IsSMTP.
SMTP, recall, dari Laskar kami Net mengacu pada email,
dan itu hanya berarti menggunakan server email untuk Frosh IM pendaftaran.
>> Apa host yang ingin saya gunakan?
Nah, Harvard, jika Anda Google sekitar, memiliki server email yang disebut smtp.fas.harvard.edu.
Jika Anda bermain bersama di rumah atau Anda tinggal di jaringan Comcast
mungkin sesuatu seperti smtp.comcast.net.
Ini benar-benar tergantung pada tempat Anda tinggal dan siapa ISP Anda.
Setelah itu aku akan mengatur saya dari alamat sewenang-wenang menjadi jharvard@cs50.net.
Saya kemudian akan mengatur untuk mengatasi menjadi jharvard@cs50.net.
Satu-satunya cara saya tahu bahwa fungsi-fungsi yang disebut SetFrom dan AddAddress
adalah, sekali lagi, saya membaca dokumentasi.
Ini bukan semacam ajaib diketahui semua programmer.
Lalu aku menetapkan tunduk "pendaftaran."
Dan sekarang baris ini agak jelek karena apa dot operator berarti di PHP?
Ada yang tahu?
Menggabungkan.
Dalam C itu adalah rasa sakit di leher untuk menggabungkan 2 string bersama-sama.
Anda harus berurusan dengan malloc atau realloc atau semua dari hal-hal yang
hanya untuk memperpanjang panjang string.
Dalam PHP, dalam JavaScript dan bahasa lainnya
Anda biasanya dapat melakukan ini dengan satu karakter.
Dalam hal ini, titik berarti mengambil string ini di sini
dan menambahkan untuk itu string ini.
>> Oh, dan omong-omong, harus menambahkannya string ini,
yang akan terjadi di dalam variabel itu global yang super.
Kemudian tambahkan untuk itu baris baru, sehingga semua titik hanya berarti
terus membuat string yang lebih besar dan lebih besar dan lebih besar,
dan Anda tidak perlu peduli sama sekali tentang malloc atau sejenisnya dalam bahasa seperti ini,
dan ada cara lain untuk melakukan hal ini, tapi ini adalah salah satu yang tercepat
cara untuk berbaring keluar.
Apa ini lakukan?
Ini menciptakan sebuah badan email yang akan mengatakan Nama: Kapten: Kelamin: Dorm:
semua pada baris yang terpisah, dan kemudian terakhir,
satu baris kode, dan aku akan mengabaikan ini untuk saat ini.
Jika == false hanya berarti jika sesuatu yang tidak beres,
tapi keajaiban terjadi di sini.
Mail kirim berarti mengirim email ini.
Mari kita lihat apa hasil bersih adalah.
Di bagian bawah file, perhatikan itu akan mengatakan Anda benar-benar terdaftar
jika saya mendapatkan yang jauh.
Jika, meskipun, pengguna sekrup atas, perhatikan bahwa kita memulai ini
jika kondisi di sini, jika tidak kosong dan tidak kosong
dan tidak mengosongkan kita mengirim surat.
Kalau tidak kita akan mengirimkan baris kode,
yang akan memiliki efek, seperti yang akan Anda lihat dalam pset 7, untuk mengarahkan pengguna
kembali ke tempat mereka datang, froshims3.php.
>> Semoga, sebaliknya ini akan menjadi demo paling mengecewakan saat ini.
Di sini kita pergi.
Mari saya membuka inbox email saya untuk jharvard di Gmail.
Tidak ada email sekarang. Baiklah.
Sekarang biarkan aku membuka froshims3, yang merupakan contoh ketiga dan terakhir kita akan melihat di sini.
Oke, di sini kita pergi.
Nate, dia akan menjadi kapten, laki-laki, dari, katakanlah, Apley.
Daftar. Oke, Anda benar-benar terdaftar.
Sekarang jika saya gulir ke email saya, oh, Tuhan.
Saya baru saja dinamis mengirim email di Web.
>> Mari kita tinggalkan pada catatan.
Sebuah video yang datang untuk kuliah kita tidak terjawab. Sampai jumpa minggu depan.
[CS50.TV]