[Powered by Google Translate] [Semaine 8]
[David J Malan] [Université de Harvard]
[C'est CS50.] [CS50.TV]
>> Bienvenue à nouveau.
C'est CS50, et c'est le début de la semaine 8.
A quelques occasions cette semaine,
parmi eux cet exposé ici, au cours de laquelle la nourriture sera servie.
Pour plus de détails, consultez les diapositives qui sont en ligne.
Et aussi un autre événement cette semaine par notre propre Carriero Thomas.
Il est l'un des anciens boursiers du CS50 enseignement tête qui est maintenant à Dropbox,
et c'est lui qui nous a mis en contact avec le vous savez quoi,
donc si vous voulez plus de cette tête de leur parler cet après-midi pour Dropbox et plus encore.
CS50 déjeuner est ce vendredi.
N'hésitez pas à nous joindre si vous êtes en mesure, 1:15, comme d'habitude, au feu et la glace.
>> Et maintenant nous plonger dans quelque chose qui s'appelle séminaires.
Nos CS50 Séminaires, rappel, sont ces cours facultatifs menés par les boursiers d'enseignement
assistants de formation et des amis du cours,
des gens provenant d'un groupe sur le campus appelé ABCD, qui est un groupe de
technophiles sur le campus, ainsi que d'un groupe appelé HCS,
la Société Harvard ordinateur, étudiants de premier cycle qui sont également intéressés par l'informatique.
L'alignement de cette année, des séminaires comprend des séminaires sur Android et iOS et JavaScript
et PHP, Unix, Vim, et de plus, donc se rendre compte que ces séminaires sont à venir.
Si vous voulez confirmer votre présence à la tête de l'un d'eux à cette URL là-bas.
Nous allons ensuite poster sur le site Web du cours des temps et des lieux une fois qu'ils sont finalisés.
Mais il convient de savoir de 5 années de séminaires antérieurs disponibles en ligne,
dont un grand nombre sont encore très actuelle en termes de technologies que vous pourriez
envie de jouer avec pour vos projets finaux, la tête là pour des vidéos disponibles de celui-ci.
>> CSS, ceux d'entre vous qui sont familiers avec les CSS déjà,
quel est-il en quelques mots?
Qu'est-ce que CSS?
Il a des feuilles de style, et ça veut dire quoi?
Qu'est-ce que faire pour nous, CSS?
Très bien, nous allons réchauffer avec un plus facile, HTML, Hypertext Markup Language.
Qu'est-ce que faire pour nous?
N'importe qui?
Il commence à faire vraiment maladroit poser ces questions.
HTML, Hypertext Markup Language.
Oui? Non?
[Réponse de l'élève inaudible]
Bon, bon, il nous permet de marquer le texte à afficher dans un navigateur Web.
Ce n'est pas un langage de programmation.
C'est en effet un langage de balisage, ce qui signifie qu'il indique au navigateur comment afficher
l'information, de sorte que le plus simple incarnation de ce que nous avons vu
est quelque chose de super simple comme boldfacing, ouvert support b Support fermé dit
faire de ce texte en gras, et c'est en fait juste une des nombreuses façons
dans lequel nous pouvons le faire, et en effet, ces jours-ci une meilleure approche
pour styliser votre page web, rendant les choses en gras et en italique
et centré et justifié et autres, ne se fait pas par l'intermédiaire des balises HTML seul
mais plutôt avec une technique appelée CSS, Cascading Style Sheets.
C'est un langage en soi.
Il n'est pas non plus un langage de programmation, mais-
tout le monde, c'est Dan, qui ne cesse de nous rejoindre aujourd'hui.
Certaines difficultés techniques. Pas un problème.
>> CSS nous permet de styliser une page
en fixant ce qu'on appelle des propriétés, nous allons donc jeter un oeil à cette
par le biais de quelques exemples de base.
Laissez-moi aller dans l'appareil aujourd'hui.
J'ai le répertoire source 8 lundi ici,
et je vais aller dans un répertoire appelé CSS où nous avons tout un tas
des fichiers en attente pour nous ici,
et dans ce dossier, nous avons, par exemple, search0.html de la dernière fois.
Maintenant, rappelons avec search0 nous sommes partis sur cette note
trier par Google de mettre en œuvre ou vraiment juste avant la fin pour une semaine ou deux il ya,
et remarquez que nous avons eu quelques nouvelles balises là.
Nous avons eu h1 pour un grand titre en gras,
forme, ce qui nous a permis de réellement avoir un formulaire HTML pour l'utilisateur.
Action, quel était le sens d'un attribut d'action
sur la balise form HTML?
Quel était le sens de cette action,?
Je vais le faire aujourd'hui.
L'action est la destination où le formulaire doit être soumis.
Le fait que l'action qui dit = "google.com / search»
signifie que lorsque l'utilisateur clique sur le bouton de soumission ou l'équivalent
quelle que soit la forme qu'ils champs remplis vont être envoyé à notre serveur
ou notre appareil, mais plutôt à cette URL spécifique à Google.
Et la méthode qu'il va utiliser est appelée obtenir,
et obtenir, pour l'instant, c'est juste une technique pour transmettre des informations sur un serveur Web
par le biais de l'URL, nous allons donc jeter un coup d'œil en arrière à la façon dont cela fonctionne.
>> Notez qu'il ya une entrée dont le nom est q
dont le type est texte, puis une seconde entrée de type submit
dont la valeur est CS50 Recherche, et en effet, si nous ouvrons ce fichier ici,
search0.html, c'est une forme super simple,
et si je recherche quelque chose comme l'informatique
puis appuyez sur Entrée ou cliquez sur Rechercher CS50
remarquer que ce qui se passe est au-delà d'apprendre à Google
J'ai spécifiquement retrouvés dans cet URL en haut,
google.com / search? q = ordinateur + science,
et de l'informatique est évidemment ce que j'ai tapé po
Le + signifie juste que c'est là un caractère d'espace était,
et c'est fait par le navigateur juste pour s'assurer qu'il n'ya pas de
la confusion et l'espace blanc dans l'URL.
Et alors q, bien sûr, est le nom du paramètre.
Nous n'avons pas vu la façon dont nous, le programmeur, peut effectivement accéder q encore.
On peut supposer que Google sait pas quoi faire avec ça ici,
mais on va y arriver en temps voulu aujourd'hui.
>> Mais laissez-moi jeter un oeil à la place search1.html,
ce qui est un peu différent parce que j'ai décidé que cette forme là était juste un peu boiteux.
Je veux dire, il est en haut à gauche.
Il n'y a vraiment pas d'esthétique à elle, et je tiens donc à styliser cette
un peu plus comme Google, dont la page d'accueil, rappel,
même si vous ne pourriez pas le visiter souvent, ressemble à ceci aujourd'hui le jour d'Halloween.
Si nous, au lieu d'ouvrir la version 1 de ce fichier, 1.html recherche, je l'ai porté.
, Encore assez laid, mais au moins maintenant, j'ai commencé à contrôler l'esthétique de cette page
pas seulement le marquage de celui-ci.
Jetons un coup d'oeil à la recherche 1, et il n'y a vraiment qu'une seule différence ici,
qui pourrait sauter hors de vous, ou peut-être pas,
mais ce qui est la seule ligne ou un extrait de la différence?
>> Il ya cet attribut style, il s'avère que dans HTML
la plupart des éléments, la plupart des balises peut avoir un attribut style sur eux,
et à l'intérieur de cet attribut style est une chaîne entre guillemets,
et cette chaîne est cité CSS.
Vous pouvez mettre la feuille de style en cascade il
en le spécifiant comme nom de propriété
suivie par un deux-points suivi d'une valeur.
C'est en quelque sorte d'une décision de conception malheureuse il ya quelques années
que le CSS est un langage en soi,
mais syntaxiquement, il est très différent du HTML.
Dans ce cas, nous voyons que l'intérieur de ma page, ce qui est écrit en HTML,
J'ai CSS à l'intérieur de ces citations, et de la convention pour le CSS
c'est que vous avez ce qu'on appelle une propriété suivie, encore une fois, un point virgule
suivie de la valeur de ce bien, il n'y a donc pas de signe égal.
Il n'ya pas de guillemets supplémentaires.
C'est juste ce colon paire séparée valeur de la clé,
et la ligne de texte fait exactement ce qu'il dit.
Elle aligne le texte dans le corps de la page, ce qui est vraiment le courage de la page,
dans le centre.
>> Bon, le résultat final alors, pour être clair, est-ce.
Pas du tout sexy, mais au moins il est centré et un peu plus comme la vraie Google.
Mais si je la place d'ouvrir la version 2 du présent
et souligner ici une nouvelle étiquette tout à fait?
Maintenant à la tête de ma page, qui, auparavant, n'avaient quelle balise
dans tous les exemples précédents?
Il vient d'avoir cela, le titre.
Un moment il ya la balise head ressemblait à ceci.
Maintenant, au lieu qu'il a une étiquette à l'intérieur de style de celui-ci,
et cela aussi, je m'excuse, ressemble syntaxiquement très différent du HTML,
mais on s'y habitue, où à l'intérieur de la balise de style
Je peux maintenant factoriser ce qui était il ya un instant
un attribut, l'attribut de style, et je peux le mettre tout en haut de ma page.
>> Pourquoi?
Eh bien, c'est une étape vers la nettoyer des choses, un peu comme dans l'écriture de code C
il nous arrivait écrire des fonctions pour factoriser des fonctionnalités communes.
C'est juste un peu plus propre pour commencer l'affacturage des choses comme l'esthétique
dans un emplacement central plutôt que de l'avoir tout au long de votre intercaler HTML.
Cela ne veut trop ce qu'il dit, même si il ya un peu de syntaxe nouvelle.
Il s'agit ici d'un sélecteur, et le corps signifie suffit de sélectionner l'élément de corps
et appliquer les propriétés suivantes à celui-ci.
Eh bien, la propriété est exactement le même.
Pour faire bonne mesure, j'ai ajouté un point-virgule à la fin,
qui tend à être la convention, et je l'ai enveloppé cette propriété entière
dans des accolades car je pouvais avoir des choses différentes ici.
Je pouvais dire quelque chose comme color: blue;
>> Maintenant, ce n'est pas non plus va être une étape vers quelque chose tout ce que jolie,
mais si je reviens à la version 2, j'ai au moins fait maintenant le corps de mon
Cette page a texte tout bleu.
Le bouton reste le même, parce que c'est une entrée. Il ne s'agit pas du texte pur.
Mais tout ce qui est du texte, comme CS50 Recherche en haut, est en fait bleu.
Encore une fois, tout ce que nous avons fait aujourd'hui est de retirer de la balise body, avis,
l'attribut de style, et nous avons pris il ici.
Ce n'est pas une amélioration énorme, mais si nous prenons un peu plus loin
remarquer ce que nous pouvons faire dans cette troisième version ici.
>> En search3.html la page Web est presque identique
sauf pour ce nouveau tag?
Lien, si celui-ci n'est pas très bien son nom
parce que vous n'êtes pas la liaison dans le sens d'un lien hypertexte cliquable.
Au contraire, vous êtes en quelque sorte de faire l'équivalent de # include en C
où la balise de lien avec un attribut href
et un attribut rel dit aller de l'avant
et copier coller le contenu d'un fichier appelé search3.css ici, essentiellement.
Ce n'est pas tout à fait cela, mais c'est l'esprit de celui-ci.
Il dit aller ouvrir ce fichier, search3.css,
et de la traiter comme si l'utilisateur avait tapé ici, à la tête de la page
comme je l'ai fait dans l'exemple précédent.
Search3.css, quant à lui, est assez simple.
Il contient vraiment exactement ce qui était il ya un instant
dans la balise style, mais j'ai pris ça sur ici pour son propre fichier.
>> Même si nous n'avons pas passé beaucoup de temps du tout en HTML ou en programmation web
juste intuitivement ce qui est de la motivation, peut-être, pour la factorisation
ce petit extrait de CSS, même dans son propre fichier
puis l'inclure avec ce tag lien ici?
[Réponse de l'élève inaudible]
Bon, il est plus facile de lire dans le sens que vous avez votre code CSS dans un fichier CSS.
Vous avez votre code HTML dans votre fichier HTML, il est donc plus lisible dans ce sens.
Quoi d'autre pourrait être convaincant? Ouais.
[Réponse de l'élève inaudible]
Ouais, donc vous pouvez inclure plusieurs fois, alors maintenant nous faisons ces
exemples de base avec des fichiers individuels, mais supposons que vous êtes en train de faire
un vrai site comme vous voulez pour pset 7 ou votre projet final peut-être,
et vous voulez avoir plusieurs pages Web, comme c'est certainement commune sur
le Web réelle large, et il serait un peu boiteux
d'avoir à copier et coller la même couleur bleue
et le même texte aligné centre dans chacune de ces pages.
Au contraire, il est plus judicieux de factoriser, un peu comme nous l'avons fait en C
avec le fichier. h, mettez-le dans un endroit central,
dans ce cas search3.css, puis laisser n'importe quel fichier
dans votre site Web à fait inclure ce fichier par le biais de ce tag ici à la ligne 16.
Comme c'est généralement le cas, nous avons commencé avec la version 0, le type de travaux
mais n'est pas nécessairement le meilleur, et à chaque étape,
recherche 1, de recherche 2 et 3, nous avons maintenant chercher avons pris ces mesures pour bébés
vers des conceptions qui sont un peu plus propre et plus préparatoires
pour les pages plus complexes que nous pourrions faire sur la route.
>> Permettez-moi d'ouvrir ici un dernier exemple juste pour montrer
une page encore plus stylisée, mais d'abord, regardons le code HTML.
C'est search4.html, et notez que structurellement c'est presque la même
à l'exception de l'introduction d'une nouvelle balise, div.
Div est une balise qui introduit une division de la page.
Vous pouvez considérer cela comme un rectangle invisible.
Il crée en quelque sorte une bande de zone dans la page Web
que vous pouvez styliser tout à la fois.
Qu'est-ce que j'ai fait ici est la suivante.
A l'intérieur de ma balise body, qui a toujours été là,
Je dis créer une division de la page ici par des lignes 45 à 47,
ce qui signifie essentiellement me donner un rectangle invisible en haut de la page.
Alors donnez-moi un second rectangle, quoique invisible, en dessous,
et l'identifier par la teneur nom, puis enfin,
donnez-moi une troisième division de la page en bas
appelé ID.
Nous allons voir pourquoi j'ai fait cela dans un instant,
mais conceptuellement J'ai une division en-tête.
J'ai une division du contenu, et j'ai une division de bas de page de la page
même si ce ne sont que dans le balisage.
L'utilisateur n'est pas d'aller voir 3 rectangles,
mais il sorte de structure dans les coulisses
ils sont effectivement présents.
>> Maintenant, qui s'en soucie? Pourquoi fait cela?
Tout le reste de la page est le même que nous avons vu auparavant.
Voici mon formulaire. Voici ma contribution, ma contribution, un saut de ligne et ainsi de suite.
Voici une image, mais alors nous verrons où cela vient dans un instant.
Voici un pied de page, ce qui est nouveau, juste parce que je voulais mettre en place
contenu un peu plus ici.
Si nous défiler vers le haut remarquerez que l'ID de ce div est d'en-tête.
L'ID de cette div est contenu, et l'identifiant de celui-ci est de bas de page.
Et comme son nom l'indique, lorsque vous avez un attribut ID
en HTML, par définition, il doit identifier
l'un des éléments, l'un des balises dans votre page.
Le fardeau est totalement de vous rappeler que vous avez un code d'en-tête déjà.
Vous avez un pied de page. Vous avez déjà un ID de contenu.
L'ordinateur ne va pas comprendre ce que l'ID disponible est pour vous,
de sorte que vous pourriez accidentellement donner 2 balises d'en-tête d'un ID,
et ce serait juste faux.
>> Vous devez garder à l'esprit ce que vous avez créée,
mais une fois que vous avez fait cela préavis ce que nous pouvons faire ici.
Je peux maintenant spécifier dans ma balise de style au sommet
ou de manière équivalente dans mon fichier CSS, si j'étais encore en utilisant cette version,
Je peux dire # header, et ce que cela signifie, c'est que quel que soit tag
dans cette page web a un ID de tête
et #, juste par convention humaine, représente l'ID.
Le signe dièse ou le signe dièse représente l'ID.
En-tête est le nom que je lui ai donné.
Cela signifie appliquer cette propriété CSS
à tout ce tag dans cette page porte un ID de tête.
Même affaire ici.
Appliquer cette propriété, qui se trouve être le même, à n'importe quel élément
dont l'identifiant est contenu, et puis ici
remarquerez que je me suis un peu amateur avec pied de page.
Tout élément dont l'ID est de bas de page, dont il peut y avoir qu'un seul par définition,
aller de l'avant et de faire sa taille de police plus petite,
son audacieuse poids de la police, sa marge de 20 pixels.
>> Qu'est-ce que ça veut dire?
C'est juste une marge sur le haut, le bas, la gauche et la droite.
Cela signifie me donner une marge de 20 pixels invisibles autour d'elle
juste pour pousser tout le reste loin de lui un peu, comme vous le feriez dans Word,
Microsoft Word ou Pages ou similaire.
Et puis le texte align center.
Voyons le résultat final, et puis nous allons revenir à l'extrait de celle qui reste du CSS là.
Ceci est la version 4, le dernier des exemples de recherche, et c'est beaucoup, beaucoup plus sexy.
Maintenant, pour être juste, je viens de googlé "générateur de google logo de la police."
Et cela m'a permis de créer un fichier GIF, un format d'image, qui ressemble à celui là.
En fait, vous pouvez le faire aussi.
Nous avons "générateur de logo google polices."
>> Voyons voir si nous pouvons faire cela.
Bon, je pense que c'est le site que j'ai utilisé.
Nous pouvons dire Ec 10, par exemple, et se les approprier.
Vous pouvez jouer avec toute la journée longue, puis faites un clic droit sur l'
et ensuite télécharger le réel GIF, qui est tout ce que j'ai fait.
Et en effet, c'est pour cela que dans mon HTML, de rappeler ici
J'ai eu une balise d'image, dont nous avons vu brièvement la semaine dernière
dont la source est logo.gif.
Et quoi encore était la motivation pour avoir cet attribut alt,
cet attribut alternative?
Ouais.
[Réponse de l'élève inaudible]
Bon, alors 2 raisons vraiment, si le navigateur ne peut pas tirer vers le haut l'image
parce que vous avez une connexion réseau lente ou si l'image est corrompue
ou quelque chose comme ça au moins l'humain peut voir "CS50 recherche»,
et puis aussi pour des raisons d'accessibilité.
Si vous avez un utilisateur qui est aveugle et utilise un lecteur d'écran
et par conséquent ne peuvent évidemment pas voir les images qu'ils peuvent au moins
entendre le texte si leur ordinateur, il leur parle.
>> En général, il est préférable de pratiquer quand il s'agit de l'accessibilité des pages
de sorte que les utilisateurs, même dans cette situation peut entendre ou voir, pour ainsi dire,
qu'est-ce que c'est sur votre page.
Il ya une autre chose que j'ai fait ici
qui est un peu intéressant, et nous verrons plus sur ce problème dans set 7
via un des courts métrages dirigés par l'un des compagnons d'enseignement.
Mais # contenu se réfère à la balise
dont l'identifiant est contenu, mais alors il ya un espace, et puis il ya le mot d'entrée.
Eh bien, ce qui est intéressant à propos de CSS est que vous pouvez
reportez-vous aux étiquettes dans une sorte page de façon hiérarchique,
et ce que ce bout de moyens CSS est de trouver la balise
dont l'identifiant est contenu, et ensuite appliquer les propriétés suivantes
à toutes les étiquettes d'entrée qui sont des descendants de contenu,
c'est ce que sont mis en retrait à l'intérieur de celui-ci.
Indentation, encore une fois, est seulement important de l'ordinateur et non à l'être humain,
mais par convention, nous tiret choses comme nous aller plus loin dans une page,
si cela signifie appliquer une marge de 5 pixels à n'importe quel élément d'entrée
c'est quelque part à l'intérieur ou imbriquées à l'intérieur des
l'élément dont l'ID est contenu.
>> Qui est-ce que s'appliquent-elles?
Eh bien, il ya en fait seulement ces 2 gars ici.
Notez que l'intérieur de la forme, il ya 2 entrées,
comme il a été pour tous ces exemples.
Mais remarquez que ces 2 entrées se trouvent être imbriquées à l'intérieur,
quoique un peu profondément, un couple de couches indentation,
à l'intérieur de la balise dont l'ID est contenu.
Qu'est-ce que cela signifie?
Si nous allons vers le navigateur vous pouvez voir ici un tant soit peu-
permettez-moi de zoomer-ce que il ya un peu de rembourrage entre le bouton
et entre la zone de texte.
>> Permettez-moi de mettre temporairement hors que.
Permettez-moi de remonter vers mon CSS, et laissez-moi aller de l'avant et juste
changer cette marge de 5 pixels à 0 pixels.
Permettez-moi aller de l'avant alors et enregistrez le fichier, revenez au moteur de recherche
et de recharger, et de regarder le milieu de la page.
Tout a été comprimées ensemble, et quand je suis fouettée cet exemple jusqu'à
Je pensais que l'air stupide avec le champ de texte, puis sur le bouton juste en dessous.
Je voulais pad c'est un peu, alors j'ai introduit des marges.
Ce que nous ne ferons pas dans la conférence est de passer par la plusieurs dizaines de
Propriétés CSS qui existent parce que, encore une fois, il ya des choses comme la taille de la police,
poids de la police, de la marge, le texte aligner, et quelques dizaines d'autres,
et nous allons vous renvoyer à problème posé 7 à différents tutoriels en ligne
et des références qui vous permettent de choisir ces choses.
Mais ce qui est vraiment important à la fin de la journée
>> est de comprendre comment ces choses sont appliquées.
Encore une fois, si nous avons l'étiquette à l'intérieur de style dont
peuvent aller les sélecteurs, le tri des identificateurs qui spécifient
à qui voulez-vous appliquer ces propriétés,
et puis vous mettez les propriétés comme la paire valeur-clé
séparés par deux points et terminé par un point virgule,
ou vous pouvez ripper tout cela et de le mettre dans un fichier CSS séparé
lui-même.
Tout droit, toute question sur les concepts
ou la grande image de CSS?
Vous voyez encore plus de lui dans pset 7,
mais on garde ça en général assez simple.
Non? Très bien.
Il est temps pour un langage de programmation proprement dite,
et nous y reviendrons un peu de CSS sous la forme d'un exemple.
PHP est en fait une langue merveilleusement accessible
en ce qu 'elle est à peu près équivalent à syntaxiquement C.
En d'autres termes, si vous connaissez le C, vous le savez pour la plupart, PHP,
au moins syntaxiquement, même s'il ya quelques nouvelles fonctionnalités
et quelques nouveaux concepts que nous aurons à regarder.
>> Mais la plupart du temps, maintenant que nous avons de transition de C à PHP
la plupart des choses est vraiment nouveau dans le grand tableau,
la façon dont vous utilisez un langage de programmation sur le Web, par opposition à
à la ligne de commande ou dans une invite de clignoter comme nous l'avons fait jusqu'à présent.
À titre de référence, en particulier avec pset 7 et le projet final en avant,
ne profiter de cette URL ici si vous voulez lire sur les formalités de PHP.
Il s'agit en fait comme un manuel en ligne gratuit efficacement,
et vous trouverez aussi que ce qui est vraiment bien avec PHP
est qu'il ya des centaines de fonctions qui vont avec,
alors qu'en C vous n'avez pas nécessairement accès à
plus de fonctions que ne l'étaient dans la bibliothèque mathématique, la bibliothèque CS50.
En PHP, et un grand nombre de langues modernes, Python et Ruby parmi eux,
vous aurez accès à tellement de fonctions plus, ce qui signifie que vous obtenez pour écrire
beaucoup moins de code que vous pouvez vous tenir sur les épaules des autres personnes
qui ont déjà écrit certaines choses pour vous.
>> Jetons un rapide tour d'horizon de la syntaxe de PHP et puis écrire quelques exemples.
Ce qui est bien sur PHP abord et avant tout
est il n'ya pas de fonction principale.
Si vous voulez écrire un programme en PHP que vous venez de commencer à écrire du code,
et vous n'avez pas à vous soucier principale.
Il n'y a aucun int. Il n'y a pas de retour.
Il n'ya pas de argv, argc qui est nécessaire lorsque vous écrivez le programme.
Plutôt que vous pouvez juste commencer à écrire du code, et c'est en partie
parce que PHP est ce qu'on appelle un langage interprété.
C a été compilé, et il a été compilé dans le sens que vous commencez
avec le code source, le lancer à travers Clang, qui est un compilateur,
et, finalement, après un certain nombre d'étapes que vous obtenez le code objet, 0 et de 1.
PHP et Python et Ruby et Pearl et d'autres
existe différents types de langues en ce que vous ne les compiler.
Tu ne vas pas partir du code source de 0 et de 1.
Il vous suffit d'exécuter le code source, et que vous exécutez le code source
par écrit dans un fichier texte ordinaire, se terminant par. php dans ce cas,
au lieu de. c, et de ce fait le programme sur votre ordinateur
est l'interprète littéralement votre code ligne par ligne par ligne.
>> En d'autres termes, plutôt que d'écrire un programme et exécutez le programme
directement vous au lieu d'écrire un programme avec un fichier se terminant par. php.
Ensuite, vous exécutez un programme qui s'appelle php.exe, si vous êtes sous Windows,
ou tout simplement PHP si vous êtes sur Mac OS ou Linux,
et de vous fournir en entrée au programme PHP votre propre code source,
et son but dans la vie est de lire votre code de haut en bas, de gauche à droite,
et faites ce que vous avez dit de faire.
>> Voyons voir ce que cela va signifier syntaxiquement.
En PHP, nous avons conditions.
Cette diapositive est identique à ce que vous avez vu revenir dans la semaine 1
parce que syntaxiquement conditions, IFS et IFS else et else en PHP
exactement comme ça.
Quand il s'agit de les expressions booléennes ils vont ressembler exactement cela.
Quand il s'agit de Anding choses ensemble comme des booléens ça va ressembler exactement cela.
Interrupteurs le même aspect, et vous obtenez l'avantage supplémentaire en PHP
que les commutateurs C ne pouvait passer sur un char ou un int.
On ne pouvait pas passer sur une valeur de chaîne.
En PHP, vous pouvez en fait avoir une expression
qui est une variable dont le contenu est une chaîne de caractères,
et vous pouvez réellement faire une comparaison de chaînes dans la vraie façon intuitive,
comparaison pointeur non, afin de décider s'il ya lieu de faire cas i ou j ou autre chose.
Nous allons voir ce que pourrait avant longtemps.
>> Boucles trop merveilleusement sont les mêmes.
Pour les boucles ont une initialisation, une condition, et un certain nombre de mises à jour.
Alors que les boucles existent aussi en PHP.
Faire des boucles while existent aussi en PHP,
et les tableaux existent en PHP, mais c'est ici que la syntaxe commence à être un peu différent,
mais les concepts sont les mêmes, et les concepts sont vraiment la même
comme ils étaient dans 0 Semaine avec Scratch.
D'abord et avant tout, c'est le signe $.
Il s'agissait d'une décision de conception dans laquelle une variable PHP
en PHP par la conception commence avec signe $.
Il n'y a plus aucun X, Y, Z. Il est maintenant X $, $ Y, Z $ juste parce que.
C'est quelque chose à garder à l'esprit, et maintenant sur le côté droit
ce ressemble à un tableau,
mais nous utilisons ici entre crochets.
En PHP et JavaScript que nous finirons par voir,
pour déclarer un tableau que vous faites ouvert et fermé crochet crochet,
et puis vous avez une liste séparée par des virgules des valeurs, que ce soit ints
ou des chaînes ou des chars, ce que vous voulez, à l'intérieur de cette expression là.
>> Maintenant, comment avons-nous fait quelque chose comme cela en C?
Quelle a été la syntaxe pour déclarer statiquement un tableau de nombres connus?
C'était accolades, si peu de différence ici, mais en PHP
et, finalement, il utilise juste JavaScript crochets, donc vraiment
le seul détail intéressant ici, c'est le signe $ pour le nom de la variable
et aussi les crochets, et il ya une chose curieuse
qui a été omis aussi bien sur le côté gauche du signe =.
Ce qui manque, ce que nous avons besoin depuis des semaines? Ouais.
[Réponse de l'élève inaudible]
La taille, donc il n'y a aucune mention de la taille du tableau.
Franchement, il n'y a aucune mention de crochets sur le côté gauche
du signe =, et quoi d'autre est absent de la ligne?
Ouais. >> [Réponse de l'élève inaudible]
Le type, donc ce qui est intéressant, en particulier à propos de PHP
c'est que ce n'est pas un langage fortement typé comme C est,
et qui est fortement typé dans le sens que vous devez dire char,
vous devez dire int, float, vous devez dire.
>> Chaque fois que vous voulez une variable que vous avez à dire à ce Clang son type est.
PHP est un peu paresseux.
Il est typé dans le sens où
vous pouvez avoir des flotteurs et les caractères et les chaînes
et ints et ainsi de suite, mais la langue elle-même
ne s'intéressent pas vraiment ce que vous mettez à l'intérieur d'une variable.
Vous n'avez pas à informer à l'avance ce type de données
va dans une variable.
C'est entièrement à vous, donc c'est sympa
en ce que vous n'avez pas à s'inquiéter autant de données en tapant
et s'inquiéter de ce que vos arguments sont et ainsi de suite.
Cela signifie aussi éventuellement des fonctions de PHP vont être en mesure de retourner
soit plus un int du temps, et peut-être de temps en temps
ils vont retourner un bool, un booléen faux, par exemple, pour signifier que quelque chose s'est mal passé.
Cela nous donne quelques bons côtés, mais aussi nous rendra genre de par sa conception
un peu paresseux quand il s'agit de typage des données.
>> Qu'y at-il de garder à l'esprit ici?
Variables air tout à fait comme ça, donc $ s = "Bonjour, monde."
C'est peut-être déductible de l'exemple précédent,
et nous avons un autre type de boucle.
Celui-ci nous fait voir de temps en temps car il est tout à fait maniable,
un foreach construire.
Dans ce cas, la boucle foreach emmène à l'intérieur de ses parenthèses 3 mots typiquement,
$ Quelque chose d'abord, qui est ce tableau ne vous voulez effectuer une itération sur les membres de,
alors littéralement le mot-clé sous, puis enfin,
un autre nom de la variable que vous aurez à choisir.
Il peut être foo, bar, ou un élément,
et ce que cette construction ne
est de savoir si le tableau $ contient 10 éléments
à chaque itération de ce tableau, pardon, à chaque itération de cette boucle
l'élément variable appelée va être mis à jour
d'être le premier élément de la matrice, puis le deuxième élément dans la matrice,
puis le troisième élément de la matrice, éliminant ainsi la nécessité
pour faire la notation crochets légèrement ennuyeux carré et
$ I afin de les indexer dans un tableau.
PHP fait tout ce travail pour vous et à chaque itération
tend simplement vous le prochain élément du tableau
sans avoir à connaître ou se soucier de son emplacement d'index numérique.
>> Et puis enfin, pour l'instant, il ya une autre caractéristique de PHP
qui va être extrêmement utile, surtout quand on commence la programmation sur le Web,
et qui est connu comme un tableau associatif.
Les tableaux que nous connaissons à ce jour que de 20 secondes il ya
et pour les 8 dernières semaines sont indexé numériquement des tableaux,
sorte de baies traditionnelles où les indices sont des entiers,
0, 1, 2, sur tout le chemin vers le haut.
Les tableaux associatifs sont beaucoup plus puissants.
Ils vous permettent d'avoir des clés arbitraires,
indices arbitraires et des valeurs arbitraires.
Alors que dans un régime traditionnel, c'est 0, 1, 2,
dans un tableau associatif, vous pouvez avoir un index
ou une clé de foo dont la valeur est bar.
Vous pouvez alors avoir une autre clé dont le nom est baz et dont la valeur est qux.
>> Encore une fois, stupides informatique génériques des noms de variables ici,
mais le fait est que ce tableau n'a pas tranche 0 ou support 1.
Il est plutôt allez devoir support foo et baz support.
C'est beaucoup plus souple en ce que nous allons être en mesure d'associer
mots avec d'autres mots, les clés avec des valeurs tout à fait arbitrairement,
et nous allons être en mesure d'obtenir ces valeurs dans le temps constant
parce que sous le capot ce qu'est un tableau associatif
est vraiment, c'est une table de hachage.
Rappelons qu'une table de hachage permet de mettre en peu d'entrée
comme mettre dans le David mot si vous voulez insérer David dans une sorte de dictionnaire,
et puis vous revenez une valeur généralement.
Dans le cas du correcteur orthographique, vrai ou faux.
David ou peu importe le mot est ou n'est pas dans le dictionnaire.
Un tableau associatif est vraiment juste une table de hachage,
mais il est une incarnation beaucoup plus convivial de celui-ci.
Comme nous le verrons, cela va nous permettre de faire certaines choses
très, très facilement.
>> Jetons un coup d'oeil à quelques-uns de base PHP
exemples et voyons ce que nous pouvons faire avec ce langage.
Permettez-moi aller de l'avant et d'ouvrir dans notre répertoire source aujourd'hui
un fichier appelé hello1.php.
Ce fichier est plus commentaire que c'est le code réel,
Permettez-moi donc effectivement supprimer tous les commentaires à partir du fichier
et de vous présenter peut-être le programme le plus simple PHP ici.
5 lignes, et certains d'entre eux sont des espaces blancs,
donc remarquer quelques différences clés ici.
Le fichier est appelé hello1.php.
La toute première ligne, cependant, est de <? Php.
Dans le même esprit au format HTML,
cette séquence de caractères indique à l'ordinateur
"Hé, ordinateur, voici un programme que nous sommes en PHP."
Il est sûr que ça ne se confond pas que c'est une autre langue.
La ligne 2 est un espace intéressant blanc.
La ligne 3 est notre vieil ami printf,
cette fois dans le contexte de PHP.
PHP dispose de sa propre version de printf qui se comporte exactement les mêmes,
donc cela va juste écris "bonjour, monde."
Et puis cette balise face ici,>, signifie que c'est pour mon code PHP.
>> Voyons comment gérer cela.
Je vais retourner dans ma fenêtre de terminal ici.
Je vais aller dans mon répertoire PHP.
Notez que nous avons tout un tas de fichiers, le premier de ce qui est hello.php.
Permettez-moi aller de l'avant et exécutez ce hello1.php,, entrez.
Permission denied. D'accord.
Comment avons-nous fixé des choses comme ça dans le passé?
Qu'est-ce que c'est? >> [Réponse de l'élève inaudible]
Nous avons besoin lire et à écrire, mais laissez-moi faire ls-l.
Se souvenir de cette sortie quelque peu énigmatique où hello1
semble être lisible et modifiable par moi
mais lisible par tout le monde.
Il s'avère que ce n'est pas vraiment un pas dans la bonne direction.
La différence, encore une fois, avec un langage interprété
est de ne pas exécuter le programme directement.
Vous exécutez plutôt un interprète et il remettra le code
que vous avez écrit pour qu'il puisse l'interpréter ligne par ligne.
Dans ce cas, l'interprète ou du programme En fait, je veux courir
est littéralement appelé PHP.
>> Quelque part sur ce disque dur de l'appareil il ya un programme
quelqu'un d'autre a écrit appelé PHP, ou php.exe sous Windows.
Ce que je vais faire ici, c'est que je vais diriger effectivement et en PHP
mais il donne comme argument de ligne de commande le code que j'ai écrit,
et puis je vais effectuer un zoom arrière et appuyez sur Entrée.
Il s'exécute mon programme pour moi, de haut en bas, de gauche à droite.
Permettez-moi aller de l'avant et d'ouvrir un léger écart de cela.
Dans l'avis hello2.php que cela aussi
est principalement commentaires, alors laissez-moi vous débarrasser de ces comme une distraction,
et ce qui est bien différent aujourd'hui de ce dossier?
Il ya cette nouvelle ligne, quelque peu énigmatique au sommet.
En ligne 1 il est #! / Bin / php.
Bin est une convention sur Linux et Mac OS pour les binaires,
si / bin signifie qu'il s'agit d'un dossier contenant un ensemble de binaires
qui est programmée, dont l'un est PHP.
La ligne #! est surnommé shebang,
qui est la façon rapide de le dire, et ce que cela signifie
est que lorsque vous exécutez ce programme maintenant, il ya une allusion à la partie supérieure du dossier
qui indique à l'ordinateur interprète à utiliser.
>> Cela devient un peu ennuyeux si vous aviez à dire à vos utilisateurs et vos clients
«Hé, nous avons écrit ce programme appelé hello1.php."
Tout ce que vous avez à faire est toujours de fonctionner PHP et le nom de ce programme.
Franchement, il serait tout simplement plus agréable de courir hello1.php,
et en effet, nous pouvons, si nous faisons ce qui suit.
Permettez-moi aller de l'avant et de faire ls-l, et de l'avis de hello2 il est toujours juste de lire écrire
puis lire lire, donc je ne peux pas encore le faire, hello2.php.
Mais nous avons introduit cette très brièvement la dernière fois, la commande chmod.
Si je fais un chmod + x, ce qui signifie que tous les exécutabilité plus,
puis hello2.php et puis ne ls-l à nouveau constater ce qui a changé.
Un, Linux me montre le nom du fichier en vert pour exprimer l'idée
qu'il est exécutable, mais plus important encore, sur le côté gauche
remarquerez que le bit représentant x de l'exécutable a été réglée.
Ce que cela signifie est maintenant je peux courir ./hello2.php comme d'habitude,
appuyez sur Entrée, et à cause de tout le tralala tout en haut du fichier
c'est un indice, encore une fois, qui dit à Linux
utiliser cet interpréteur pour exécuter ce fichier.
Ne vous inquiétez pas pour forcer l'utilisateur à entrer réellement.
>> Et ce qui est bien, c'est maintenant que c'est un peu hors de propos à mes clients ou mes amis
quelle langue j'ai écrit ce programme, afin que je puisse aller de l'avant avec mv
et renommer cette chose hello2, par exemple.
Et maintenant, si je le fais ./hello2
et effectuer un zoom arrière mon programme continue à fonctionner.
Ces extensions de fichiers sont une convention humaine qui est nécessaire
pour quelque chose comme Clang et Make qui regardent pour eux.
Mais pour PHP, je pourrais appeler ce que je veux extension de fichier.
Je ne pouvais tromper le monde en pensant que je suis vraiment bon à Ruby,
et je pourrais écrire hello2.rb puis exécutez ce,
et voila, maintenant j'ai la version Ruby, qui est un mensonge complet.
Mais les extensions de fichiers sont vides de sens
si le fichier est exécutable et a cette astuce spéciale au début du fichier.
>> Maintenant, en passant, permettez-moi de vous montrer rapidement la version 3,
qui est une sorte de truc utile à savoir.
En hello3 je faisais quelque chose ne tourne pas rond
que je vais mettre à jour le code source en ligne.
Dans la version 3, il s'avère que la plupart des ordinateurs Linux
il ya un programme appelé env pour l'environnement,
et ce que vous pouvez faire ici est que si vous n'avez aucune idée où PHP
est installé sur le disque dur local, car en effet il pourrait varier en fonction de l'ordinateur
que quelqu'un utilise, env dit il suffit d'exécuter env,
qui se trouve sur la plupart des systèmes, et de savoir où PHP est.
Juste un truc commun de sorte que vous n'avez pas à vous soucier de savoir si un programme est.
Mais si vous prenez soin de savoir si un programme est que vous n'avez pas pris en charge à ce jour
vous pouvez utiliser la commande qui.
>> Permettez-moi de faire un zoom arrière et le type qui php,
et remarquez qu'il me dit que c'est réellement dans usr / bin / php.
C'est un peu un mensonge. C'est aussi dans le bac.
C'est juste en me montrant le premier coup.
Si vous jamais demandé où Clang est, qui Clang, qui se trouve dans usr / bin / clang,
qui font, usr / bin / make, et ce que cela signifie, c'est tout ce temps
vous auriez pu taper usr / bin / clang entrer pour exécuter Clang,
mais c'est un peu fastidieux de le faire, de sorte que certains dossiers
comme usr / bin bin et sont supposées être par défaut
afin que l'ordinateur sait à regarder en eux pour vous.
Toute question concernant la rédaction d'un super, super simple programme Bonjour tout le monde
en PHP, puis de l'exécuter?
Parce que maintenant, nous allons commencer à introduire la syntaxe plus convaincant.
Très bien, nous y voilà.
Ces programmes nous avons vu effectivement chacun d'eux avant.
>> Si j'ouvre, par exemple, nous allons faire beer1.php,
nous n'irons pas à travers plusieurs versions de ce sujet, mais ce que j'ai fait
a été je me suis assis et il pleuvait ou convertis
mon code C en code PHP ici.
La plupart de la partie supérieure du dossier est commentaire ici.
Il s'avère qu'il ya une fonction nouvelle que nous devons appelée readline.
GetString, rappel, à partir de la semaine 0 en avant était une chose CS50.
PHP est livré avec sa propre fonction conviviale appelée readline
qui prend 1 argument qui spécifie l'invite
que vous voulez montrer à l'utilisateur, et ce ne readline
est elle renvoie tout ce que l'utilisateur tape po
Dans ce cas, je vais déclarer une variable appelée $ n.
Je suis stocker en elle la valeur de retour de readline
après demande à l'utilisateur avec cette chaîne.
Juste pour sauvegarder, diriger effectivement cette chose, laissez-moi aller de l'avant
et exécuter beer1.php php.
Combien de bouteilles seront-ils? Disons simplement faire 2 pour le moment.
Entrée. Voilà tout.
>> Le programme est fonctionnellement identique à la version C de semaines.
Mais syntaxiquement nous allons voir ce qui est différent.
Après je reçois un int à partir de la notice d'utilisation que je fais de la vérification des erreurs,
et si n est inférieur à 1 j'arrête et je imprimer
un message désolé de l'utilisateur et de sortie avec 1.
Cela aussi est un peu différent.
En C qu'avons-nous fait? En C, on a retourné 1.
En PHP, vous quittez avec 1, ce qui est franchement je pense un peu plus intuitive
parce que vous êtes littéralement quitter le programme.
Tout à droite, puis vers le bas ici la chanson ennuyeux est identique syntaxiquement
à l'exception de la variable, donc ici, dans la ligne 24 en avant
remarque que ma boucle for est presque le même,
mais j'ai en face de $ i et n,
et ce qui est également absente de la ligne 26 que nous avons eu dans le passé
en déclarant une variable i?
Il n'y a aucun type.
Il est incorrect de PHP-à-dire int.
Vous n'avez tout simplement pas besoin de le faire.
L'ordinateur, l'interpréteur PHP est assez intelligent pour se rendre compte
que si vous mettez un nombre dans $ I elle sera traitée
comme un numéro pour vous.
Et puis, ici-bas nous brancher i $, $ i, $ i - 1.
Tout cela est la même chose, et puis ici nous faire un "Wow, c'est ennuyeux" printf
et puis quittez (0).
>> Encore une fois, l'emporter ici, c'est que même si nous allons dépenser relativement
peu de temps sur PHP, certainement par rapport à ce que nous avons fait sur C,
c'est presque la même chose, et si ce que nous allons faire aujourd'hui et la semaine prochaine
et au-delà est vraiment l'accent sur quelques-unes des idées nouvelles.
Juste pour voir ce que autre chose ne traduit plus de C,
ce programme était super simple que nous avons fait dans la semaine 1
ou 2 qui en cubes d'une valeur.
Mais ce qui était intéressant à l'époque sur ce programme, c'est qu'il
introduit la notion d'une fonction personnalisée écrite que nous-mêmes écrit.
La syntaxe de PHP est presque la même.
Voici mon programme en haut.
Notez à nouveau absent, c'est toute notion de principal.
Je commence à écrire de code, et c'est ce qui va se faire exécuté par l'interpréteur.
J'imprime x est 2, sans doute.
Puis-je réclamer cubage ...
Puis-je appeler la fonction cube et passez x $
et affecter la valeur de retour de x $.
Puis-je prétendre que c'est en cubes, puis je dis cela, qui nous l'espérons
dira x est maintenant de 8.
La syntaxe de la fonction en PHP est très légèrement différente.
Encore une fois manque, c'est le type de retour.
Encore une fois disparue est le type de retour et aussi manque, c'est quel autre type?
[Réponse de l'élève inaudible]
Bon, d'accord, c'est bien. Revenons à ce que dans une seconde.
>> Nous n'avons pas, par exemple, int ici.
Nous n'avons pas, par exemple, ont int ici parce que, encore une fois, en PHP
vous n'avez tout simplement pas besoin et ne devrait pas le faire,
mais il ya ce nouveau mot-clé appelée fonction.
En PHP, c'est presque un peu plus clair parce que quand vous voulez une fonction
vous avez littéralement dire fonction, vous lui donnez un nom et une liste séparée par des virgules
si l'un de ses arguments.
Inutile de dire nulle ou quelque chose comme ça, et puis retour est le même,
$ Un $ * a * $ a.
Qu'est-ce qui manque aussi? Sammy l'a souligné ici.
Au début du fichier complètement absent en PHP est également un prototype.
C'est aussi par le design.
Langues et interprètes comme PHP sont plus intelligents que C a jamais été
dans les compilateurs comme Clang.
>> Rappelons que Clang, si vous n'avez pas dit ce que cube existe,
si vous ne l'avez pas dit ce qui existe comme printf avec un prototype
ou avec un # include, eh bien, il allait crier à vous et même pas compiler votre code.
PHP et autres langages modernes sont beaucoup plus intelligents quand il s'agit de cela.
Ils se prennent sur eux de lire tout votre code
puis crier à vous que si elle ne trouve nulle part cube.
Ce n'est pas grave si cube est en bas ou en haut, ou même dans un fichier séparé.
Langages PHP et similaires sont maintenant assez intelligent pour regarder vers l'avenir
à tout avant de vous jugeant comme ayant commis une erreur.
Où en sommes-nous?
>> Faisons un dernier exemple ici dans des conditions,
et si j'ouvre un avis conditions2.php too
syntaxe ici est presque la même.
J'utilise readline au lieu de GetString, mais cette ligne est la même que précédemment,
"Je voudrais un entier s'il vous plaît."
Ensuite, il faut une condition si, d'une autre si, et puis un autre,
mais fonctionnellement ce programme est également identique à ce que nous faisions semaines,
donc si je lance cette chose, php de conditions2,
et je lui donne un nombre comme 23 -
J'ai choisi un nombre positif. Si je lui donne -1 Je choisi un nombre négatif.
Si je lui donne 0 Je pris effet 0.
Alors, qui se soucie de tout cela?
Eh bien, l'un de la sorte amusant d'exercices ici
du moins pour moi était de revenir en arrière et voir à quelle vitesse je pouvais mettre en œuvre pset 5,
le pset fautes d'orthographe.
Rappelez-vous que il y avait ce fichier appelé speller.c,
et il y avait un fichier appelé dictionary.c.
Ce que j'ai fait j'ai un peu passé quelques minutes et je converti le code C
le code PHP, et nous ne passerons pas beaucoup de temps sur orthographique
parce que tout comme dans pset 5, vous n'avez pas vraiment besoin d'
passer beaucoup de temps sur lui-même orthographe parce que votre attention est le dictionnaire.
>> Qu'il suffise de dire que si vous lisez orthographe,
ce fichier ici, c'est à peu près équivalent au code C
nous vous avons donné pour pset 5.
Je viens d'ajouter quelques $ par endroits.
J'ai changé les noms de fonctions certaines si elles n'existaient pas en PHP.
Il ya une chose supplémentaire à cet égard, preg_match,
qui est la façon un peu fantaisiste de faire quelque chose, mais nous allons y revenir par la suite.
Mais enfin, orthographe est presque identique, et si vous regardez en bas
ce qu'il crache finalement sur ce ici,
mots mal orthographiés, les mots dans le dictionnaire, mots dans le texte.
D'accord, ce qui est intéressant maintenant est la suivante.
Au sommet de mon dossier, je suis exigeant dictionary.php.
Tout comme C # include a PHP dispose d'une fonction spéciale appelée nécessitent
c'est à peu près fait la même chose, besoin d'un fichier appelé dictionary.php.
Comment puis-je faire pour la mise en œuvre pset 5?
Permettez-moi aller de l'avant et d'ouvrir un fichier ici.
Permettez-moi de prendre un peu de référence ici.
Et permettez-moi de créer un nouveau fichier et commencer à appeler cette dictionary.php.
Permettez-moi de le mettre dans un autre dossier afin que nous puissions le faire vivre.
Et maintenant, je vais effectuer un zoom avant
Je vais commencer mon fichier PHP avec support php open close support.
Et puis ici, il y avait quelques fonctions dont j'avais besoin pour mettre en oeuvre pour pset 5,
permettez-moi de commencer à mettre en œuvre certaines de celles-ci,
contrôle de fonctionnement ainsi, qui a dû prendre un mot en argument.
Nous allons le faire et d'y revenir dans un instant.
>> Il était fonction de la charge, qui a pris en ce qui comme argument?
Dictionnaire, de sorte que le fichier que je voulais à charger.
Il était de taille fonction, qui ne prend aucun argument
et il y avait de fonction ce qui était l'autre?
Décharger, qui ne prend aucun argument non plus.
Ce sont les 4 fonctions que j'aurais besoin pour mettre en œuvre maintenant en PHP,
et ce que je vais faire est d'aller de l'avant et le faire.
Beaucoup d'entre vous ont utilisé une table de hachage en pset 5,
alors laissez-moi aller de l'avant et de créer une table de hachage en PHP.
Terminé.
Cela me donne une table de hachage. Eh bien, pourquoi?
Un, la variable est appelée $ table, juste pour évoquer l'idée d'une table de hachage.
Les crochets, cependant, rappeler, représentent quoi?
Un tableau, mais dans des tableaux PHP n'ont pas à être indexé numériquement.
Ils peuvent également être des tableaux associatifs,
ce qui signifie que vous pouvez avoir des clés et des valeurs arbitraires.
>> Tout comme dans pset 5, ceux d'entre vous qui ont fait des implémentations de table de hachage
vous avez probablement inséré le mot, puis inséré dans une chaîne de listes chaînées,
ou vous avez stocké la valeur de quelque part ou quelque chose de vrai à cet effet.
Vous en quelque sorte oublier le fait que le mot était là.
Pour l'instant, ça va être ma table de hachage,
et donc maintenant d'aller sur l'application de la fonction de contrôle
J'ai juste besoin de regarder à l'intérieur de cette table de hachage
et de voir si un mot est là.
Ce que je vais faire, c'est que je vais dire, si-
disons isset, qui est une fonction PHP qui, littéralement, signifie simplement le jeu de clés,
si isset ($ tableau [$ mot],
et si oui retourne vrai.
C'est tout. C'est pset 5 en PHP.
Eh bien, en toute équité, d'accord.
Else return false, donc il n'est pas là.
Qu'est-ce qui se passe vraiment ici?
Eh bien, si la table de table ou de hachage ici de façon plus générale-
est un tableau associatif qui signifie que vous pouvez indexer dans l'
avec un mot comme «parole», et vous devez retrouver une certaine valeur.
>> Nous sommes en quelque sorte d'en avoir une longueur d'avance sur nous-mêmes.
Il serait assez sympa si nous réellement chargé le premier fichier,
si la charge n'est pas tout à fait aussi simple, mais laissez-moi aller de l'avant et fouetter jusqu'à
une mise en œuvre très rapide de la charge.
Permettez-moi aller de l'avant et de dire des mots devient dictionnaire fichier.
La fonction PHP dans le fichier ouvre un fichier
et revient à vous un tableau de tous les mots de ce fichier,
tend simplement à vous.
Ce fut une grande douleur aussi, n'est-ce pas?
Maintenant foreach, c'est notre nouvelle construction, foreach ($ words as $ mot).
Cette boucle va commencer à itérer sur les mots tableau
et attribuer à la variable $ word chaque mot dans le fichier
à partir de la première à la seconde à la troisième à la quatrième complètement
donc je n'ai pas à faire l'ennuyeux [i] la notation, etc.
Et ce que je vais simplement faire de chacun de ces mots
est le stocker dans mon tableau en indexant la table
et puis en faisant vrai, car se souvenir
qu'un mot est dans mon dictionnaire tout ce que je dois faire
est sorte de retourner un peu et dire ce mot dans ma table de hachage est là, c'est vrai.
Et si elle n'est pas là, je n'ai pas à mettre explicitement faux,
sinon je dois mettre fausse pour tous les mots possibles de l'univers.
>> Il me suffit juste de fixer une valeur d'index
true si un mot est en fait dans ma table de hachage.
Maintenant, je vais couper quelques virages ici que je vais saluer mes mains pour le moment,
mais maintenant la fonction de charge est terminé.
Je charge tous les mots à partir du fichier dans un tableau.
Je itération sur ce tableau, et pour chaque mot de la matrice
Je le branche sur ma table de hachage avec 1 ligne de code.
C'est amusant. Vous savez comment nous pouvons mettre en œuvre la taille maintenant?
Eh bien, la taille est toujours assez facile, en toute équité.
Ici, nous pouvons tout simplement pas retourner comte de table.
C'est assez facile aussi, compter le nombre de choses dans le tableau.
C'est en fait assez pas la plus efficace.
Je devrais probablement avoir une taille variable appelée afin que nous puissions le faire
en temps constant, mais c'est assez facile.
Oh, et puis décharger, si nous voulons vraiment être ici anale
on peut dire que c'est la façon dont vous décharger quelque chose.
Vous venez de définir la variable égale à un tableau vide,
et il se débarrasse de tout ce qui s'y trouvait.
Pas besoin d'appeler gratuitement.
>> Encore une fois, j'ai coupé quelques coins, et je m'en excuse problème posé attribuer 5
peut-être en C, mais si nous avons maintenant aller de l'avant et exécutez ce,
Je vais effectivement faire tourner la version que j'ai écrit à l'avance
tellement que je n'ai pas fait d'erreurs syntaxiques que ce soit.
Permettez-moi aller de l'avant et exécutez orthographe. L'utilisation est le même.
Voici un fichier de dictionnaire qui contient juste la foo mot.
Voici un fichier texte qui contient juste foo bar.
Nous allons vérifier l'orthographe de cela, donc orthographe, l'utilisation de ce fichier de dictionnaire sur ce fichier texte.
Il ya un mot mal orthographié, un bar, et le tour est joué.
Fait avec pset 5.
Prenons une pause de 5 minutes, et nous y reviendrons en plus sur PHP.
Très bien, nous sommes de retour.
Permettez-moi de ne déteste-pendant un certain temps.
Nous allons maintenant voir réellement si ce n'était pas un effet positif
effectivement mise en œuvre de cette chose en PHP.
Certes, il a fallu 45 secondes pour la mise en œuvre.
>> Mais nous allons aller de l'avant maintenant et diriger les choses.
Permettez-moi aller de l'avant et exécuter une version C
d'orthographe, et nous allons le faire tourner sur l'un des plus gros fichiers,
qui est la Bible King James.
Et c'est ici en allons dans notre dossier C,
orthographe sur King James de la 5ème.
Un grand nombre de mots mal orthographiés.
Bon, alors c'est la sortie vous avez probablement même si les temps sont un peu différentes,
si vous avez obtenu tout fonctionne correctement, et ainsi de fois au total pour la vérification orthographique
la Bible King James était 0,38 secondes, si jolie bonne utilisation de cette mise en œuvre.
Maintenant, laissez-moi aller dans la version de PHP que nous venons d'écrire.
Permettez-moi de lancer le correcteur orthographique King James.
Oups, ignorer cette erreur. Je suis dans le mauvais répertoire.
Speller King James le 5.
C'est presque fini.
>> Bon, l'observateur attentif aura rendu compte que c'était plus de 3 secondes là-bas.
C'est le temps vrai en marche.
Il s'avère que cela prend du temps de cracher beaucoup de texte sur
en raison de problèmes de mise en mémoire tampon, mais longue histoire courte,
qui était de 3,15 secondes de temps machine, temps CPU,
par rapport à ce qui était il ya un instant?
Comme .3.
Je veux dire, c'est un ordre de grandeur plus lent, alors où est ce que
ralentissement ridicule viennent-ils?
Eh bien, comme cela a été le cas avec la plupart des décisions de conception que nous avons fait
dans la classe au cours des 9 dernières semaines il ya presque toujours ce compromis.
Parfois, entre un peu d'espace, parfois entre l'espace et le temps,
l'espace, le temps et l'effort de développement, et bien là, même si
nous avons économisé énormément de temps, peut-être potentiellement 20.10.30 heure
de temps de développement mise en œuvre du correcteur orthographique
en le fouettant en seulement 45 secondes avec cette langue
le prix à payer, c'est que c'est un ordre de grandeur plus lent en raison,
ce qui est généralement le cas avec la plupart des langages interprétés,
PHP, Python, Ruby, Pearl ou autres aux termes desquelles
si vous allez le lancer à travers un interprète et avoir lu votre code
ligne par ligne, de haut en bas, de gauche à droite,
cet intermédiaire va prendre un peu de temps qui lui est propre,
et ce que vous vous sentiez ici dans les 3 secondes au lieu de 0,3 secondes
est le fait qu'il y ait cet intermédiaire qui doit interpréter littéralement notre code
ligne par ligne, et Dieu ne plaise, si vous êtes à l'intérieur d'une boucle
avec un énorme fichier contenant des centaines de milliers de mots.
>> Que les frais généraux va ajouter et s'additionnent et s'accumulent et s'accumulent.
Pour un outil de ce genre, il n'est probablement pas le meilleur langage à utiliser pour la mise en œuvre
un correcteur orthographique si l'immédiateté est d'intérêt pour les utilisateurs et pour vous.
Mais le luxe que nous avons dans un instant est que si vous
utiliser un langage comme le PHP ou un grand nombre de langages interprétés
dans le contexte du Web, d'ailleurs, vous avez l'avantage
que l'Internet est beaucoup plus lent que la plupart des ordinateurs.
Vous avez un processeur GHz dans votre ordinateur, 2 GHz, peut-être même plus ces jours-ci.
Mais la réalité est sur l'Internet il ya une grande quantité de latence
selon laquelle, pour un navigateur pour parler à un serveur, même si nous avons vu la semaine dernière
que c'est assez rapide, une demi-milliseconde ou deux,
qui ajoute trop haut, et si vous téléchargez des choses comme une image
ou une photo Facebook ou recevoir des messages instantanés sur Facebook bavardage,
GChat ou analogue, l'ensemble de ces temps aller-retour,
entre le navigateur et le démarrage du serveur à s'additionner,
ce qui rend votre choix particulier de la langue dans de nombreux cas,
pas tout à fait pertinente, de sorte que vous êtes bien en utilisant un langage un peu plus lent
comme PHP ou Python ou Ruby
mais pour lesquelles il ya d'énormes bons côtés à vous et à vos collègues
et vos amis parce que vous pouvez mettre en œuvre tant de choses, tellement plus rapide.
Et en plus, vous avez beaucoup moins de risques de défauts de sécurité.
Il n'ya pas de pointeurs en PHP.
Il n'ya pas de fautes seg que vous pouvez facilement induire
de la même manière que vous pourriez en C.
Avec C vous êtes tout près de la quincaillerie.
Avec les langages PHP et vous êtes même genre de niveau plus élevé, pour ainsi dire,
avec beaucoup de défenses entre vous et ce qui se passe réellement
à l'intérieur de la machine, et c'est juste un compromis.
>> Nous avons obtenu au point d'avoir plus modernes, ces langages de haut niveau
comme PHP en raison des leçons apprises dans des langages comme PHP en C
Mais si vous ne comprenez pas ce qui se passe sous le capot tout ce temps
vous ne pouvez certainement pas faire les bons choix de conception,
et certainement quand il s'agit de travailler dans un endroit comme Facebook ou Google
ou l'un de ces lieux qui sont de plus en plus jouer avec grands ensembles de données
même si vous revenez en arrière et ne PREMED et nous travaillons avec un certain MD
sur certaines vaste ensemble de données portant sur des patients et des médecins
et analogues en utilisant les bons outils est extrêmement convaincante
parce que sinon votre analyse d'un certain ensemble de données peut prendre quelques secondes,
ou il peut littéralement prendre des heures.
Ce n'est là qu'un exemple, de ne pas vous frustrer avec un effort à combien plus forte
c'était en C, mais pour vous aider à comprendre que lorsque vous n'avez mettre en œuvre quelque chose dans C
vous comprenez vraiment, ou en théorie, vraiment comprendre
comment tout est ou devrait fonctionner, et vous avez le contrôle presque complet
sur ce qui se passe sous le capot, et avec ces langues de niveau supérieur
vous devez renoncer à un plus grand contrôle aux personnes qui les ont inventés
et font l'objet de plus à leurs décisions de conception que le vôtre.
Mais si l'on prend pour acquis que la performance
n'est pas aussi importante sur le Web en raison de ces autres questions,
vitesses de réseau sont seulement un peu plus lent que la vitesse du processeur de toute façon,
Nous pourrons ainsi de permettre d'utiliser un langage un peu plus lent
si les bons côtés sont les choses, nous pouvons développer 10 fois plus rapide, voire plus.
>> Voyons comment nous pouvons commencer à utiliser cette.
Laissez-moi aller dans un dossier
parmi les exemples aujourd'hui appelé frosh.ims,
et cela a été fait personnellement motivé par le fait que la première chose
J'ai écrit pour le Web ans après la prise CS50 CS51 et
est un site web pour le programme Frosh messages instantanés, les sports intra-muros de première année,
qui, à cette époque, c'était il ya assez d'années que, au moment
il n'y avait pas de site web pour le programme, même s'il y avait un site Web,
et à la place il y avait un surveillant dans l'arrêt Wigglesworth sorte que si vous vouliez
pour vous inscrire au volley-ball ou de football ou ce que vous ne remplissez une feuille de papier.
Vous pouvez ensuite marcher à travers la cour.
Vous pouvez ensuite frapper à leur porte et faire glisser dans la porte ou à la main au surveillant
un morceau de papier avec votre nom là-dessus, si oui ou non vous voulez être un capitaine d'équipe,
quel sport tu voulais faire, et ce que vous étiez dortoir po
C'était en quelque sorte une façon vieille école de faire les choses, et ce fut un premier
possibilité d'automatiser une grande partie de ce processus.
Vous allez simplement sur le site. Vous tapez quelque chose po
Vous recevez un email de confirmation, et boum, vous avez terminé.
>> Ce fut la première chose que j'ai fait, mais dans un langage appelé Pearl,
mais il est relativement facile de le faire en PHP, et c'est une sorte de représentant
des problèmes, vous pouvez commencer à résoudre quand vous pouvez vous exprimer
programme et ne pas avoir à compter sur des choses comme les sites de Google
ou Excel ou des outils qui sont remis à vous.
Les gars, vous avez maintenant la possibilité de faire des choses comme ça.
Il s'agit d'une version super laid d'un formulaire,
mais disons simplement l'utiliser pour le début de la conversation où cela est
à peu près ce que la forme ressemblait ans pour nous
pour permettre aux gens sur le Web pour vous inscrire à Frosh IM.
Nous avons demandé un nom, une case à cocher si oui ou non ils ont voulu être capitaine,
homme ou femme, et puis ce qu'ils étaient en dortoir,
et alors ils soumettre ce formulaire.
Examinons d'abord sous le capot à l'HTML qui représente la page web suivante.
Laissez-moi aller dans froshims0,
et en passant, pour pset 7 Je prends pour acquis
les répertoires et les dossiers que je suis en train choses po
Nous allons vous guider à travers choses exactement où doit se rendre dans l'appareil,
les commandes mod vous avez à courir, donc ne vous inquiétez pas pour l'ensemble de la
détails stupides synchronisation à partir de l'obtenir-aller ici.
>> D'accord, voici froshims0.php.
Permettez-moi de faire défiler vers le bas, et ce qui est curieux ici,
c'est un fichier PHP, mais ce qu'il ya dedans d'elle, clairement?
C'est tout un tas de HTML, PHP, et en effet ses origines
étaient vraiment pour être un langage Web-centric.
Tout à l'heure nous l'avons utilisé pour implémenter l'exemple de la bière,
les conditions exemple, l'exemple bonjour, et c'est bien.
Vous pouvez utiliser PHP comme un langage de script
où un script est vraiment juste la nomenclature donnée à un programme rapide et sale
ou quelque chose que vous écrivez dans un script ou plus généralement un langage interprété.
PHP est super utile pour que, parce que vous avez vu à quelle vitesse
relativement nous pouvons concocter des programmes en PHP.
Mais il a été vraiment conçu pour être utilisé pour le Web,
et conçu pour le Web, en ce sens que constater ici au début du fichier
Je commence par <? Php.
Ensuite, j'ai un tas de commentaires inutiles, accordés, mais alors je ferme le mode PHP.
Mais ensuite j'ai passer en mode HTML.
>> Ce qui est intéressant à propos de PHP est même si le fichier se termine par. Php
il est généralement destiné à être mêlés avec HTML,
un peu de code PHP, le HTML.
Et nous verrons par la suite que nous pouvons commencer à taquiner ceux en dehors
et de garder notre HTML distinct de notre PHP tout à fait,
mais les origines de PHP étaient vraiment vous donner cette flexibilité,
que si vous voulez un peu de HTML juste écrire, et ce sera
cracher identique au navigateur.
Mais si vous avez besoin d'une technique de programmation,
du code de programmation, vous pouvez aussi le mettre dans le même fichier exact, comme nous le verrons bientôt.
Voici mon code HTML.
J'ai un titre de cette Frosh pour les GI.
J'ai une balise body qui a eu un peu de CSS sur elle pour tout centrer au milieu,
et puis ici j'ai un formulaire qui va apparemment être soumis
dans un nouveau fichier appelé register0.php, alors nous verrons dans un instant.
Il utilise une méthode appelée après que nous y reviendrons aussi.
Puis-je avoir quelques données du formulaire, un nom appelé, dont le type est un texte,
celui dont le nom est le capitaine, dont le type est cochée,
et cela, nous ne l'avons pas vu, mais il fait exactement ce qu'il dit.
Vous obtiendrez une case à cocher au lieu d'une zone de texte.
Ici-bas, vous avez un bouton radio, qui est l'un de ces boutons circulaires
que vous pouvez choisir celui-ci ou celui-là.
>> Remarquez que c'est délibérément que j'ai donné deux boutons radio le nom du genre.
C'est ainsi que vous obtenez exclusion mutuelle par lequel vous devez cliquer sur
soit celui-ci ou celui-là, et en cliquant sur l'autre
il décoche l'autre, de sorte que vous devez leur donner le même nom
si vous voulez qu'ils soient mutuellement exclusifs comme ça.
Et puis, pour dortoir, je ne pense pas que nous avons vu encore, mais c'est un menu déroulant, d'un menu déroulant.
La balise car c'est de sélection.
Vous donnez alors le menu déroulant le nom,
et puis vous avez tout un tas de ces options.
Le premier, juste pour l'esthétique, est une chaîne vide.
Je voulais juste la liste déroulante sera vide par défaut,
et puis il ya Apley, Canaday, Grays, et ainsi de suite.
Et remarquez la dichotomie ici.
L'option dans la liste déroulante en bas a une valeur,
mais il a un nom humain-amical, qui dans cet exemple
est identique, mais si l'on voulait vraiment être anale nous pourrions avoir
la valeur de ce menu déroulant juste être la version courte,
Grays, mais on pourrait vraiment dire Grays Hall que l'homme voit réellement,
mais ce n'est pas tout cela intéressant, alors j'ai gardé les choses simples et les a rendus identiques.
Puis, au bas nous avons un bouton submit
que nous avons vu auparavant, mais notez que je viens de donner un autre mot.
Au lieu de chercher CS50 j'ai donné l'étiquette «Enregistrer».
>> Le résultat final est la page web ici, et encore une fois,
d'où vient ce faire soumis?
Il obtient soumis à un fichier, la valeur de l'attribut d'action,
qui était register0.php.
Voyons ce qui se passe réellement ici.
Permettez-moi aller de l'avant et de remplir ce formulaire, disons David,
mâle, Matthews, et puis je vais dire vous inscrire.
Permettez-moi de faire un zoom arrière et cliquez sur enregistrer.
Bon, sorte de rien, mais nous allons voir ce qui se passe réellement.
Notez que l'URL a changé pour être register0.php.
Quelle est curieusement absent de l'URL, mais, même si nous vient de présenter un formulaire?
[Réponse de l'élève inaudible]
D'accord, c'est tout simplement l'utilisateur Chrome être amical de nos jours.
C'est vraiment là. Ils viennent de se cacher pour économiser de l'espace.
Mais la pensée bonne, bonne pensée.
À l'autre extrémité de l'URL, cependant, ce qui manque? Ouais.
[Étudiants] La chaîne de requête.
La chaîne de requête, de sorte souviens de nos exemples simples de recherche de Google.
Dès que je clique sur le bouton envoyer l'URL
m'a emmené à Google, mais il y avait? q = informatique ou tout ce que j'avais tapé po
C'est parce que nous avons utilisé la méthode GET avec l'exemple de recherche.
>> Cette fois-ci, nous utilisons la méthode que la place?
Poster, et l'une des distinctions immédiates
entre GET et POST est qu'après ne met pas d'entrée de l'utilisateur dans l'URL.
Il la cache. Il envoie encore.
En fait, ce que nous voyons ici dans le navigateur, comme nous allons le révéler à un moment
register0 en consultant d', c'est que je suis en train de voir le contenu
de la matrice qui ont été introduites à partir du navigateur vers le serveur.
Mais l'URL n'a pas de?, N'a pas de mots-clés
ou des valeurs en elle, et pourquoi est-ce?
Eh bien, après vous permet de soumettre encore les données du formulaire vers un serveur,
mais il ne le met pas dans l'URL, si ce type d'information est post
particulièrement approprié pour peut-être quand vous demandez à l'utilisateur de
taper d'entrée à une forme?
Quelque chose comme un mot de passe, quelque chose comme quoi d'autre?
Numéros de cartes de crédit.
Tout ce qui est légèrement sensible, vous ne voulez probablement pas se retrouver dans l'URL
ce que parce que cela signifie que votre colocataire ou membre de la famille peut juste traîne par
votre histoire d'Internet et littéralement voir vos mots de passe,
littéralement voir vos numéros de carte de crédit parce que la plupart des navigateurs
retenir dans l'histoire quelle que soit URLs que vous avez été à,
si seulement parce que ce serait une mauvaise idée.
À utiliser des peaux de poste qui détaillent de l'utilisateur.
>> De plus, comment voulez-vous charger une photo sur Facebook?
Eh bien, les 2 seuls mécanismes que vous pouvez réellement utiliser,
même s'il ya quelques autres plus obscurs, est GET et POST.
Comment pouvez-vous éventuellement charger une photo via une URL?
Vous pouvez le faire réellement.
Vous pouvez prendre un JPEG ou Bitmap ou GIF et vous pouvez le représenter en hexadécimal
ou quelque chose qui s'appelle la base 64.
Au lieu de base 16 en base 64 que vous utilisez, ce qui ressemble essentiellement à
Caractères ASCII, et vous pouvez réellement charger une photo via une URL
après un point d'interrogation, mais il ya généralement des limites de taille.
La plupart des navigateurs forcer URL à pas plus de 1000 caractères,
peut-être 2.000 caractères ou similaires, de sorte que vous ne pouvez pas télécharger
de 10 Mo Photo Facebook.
Pour que vous utilisez post ainsi, donc pour l'instant se met les paramètres dans l'URL,
ce qui est agréable et utile parfois, mais pour quoi que ce soit sensible ou grande
poste est le chemin à parcourir.
Ce qui est en train de faire register0 ici?
Eh bien, si j'ouvre register0 avis que ceci est une page super simple,
mais il démontre le fait que je peux co-mêle, pour le meilleur ou pour le pire,
HTML avec PHP.
Ce fichier entier, sauf pour les commentaires au début, sont HTML
sauf pour ce gars là.
>> Notez que dans le milieu de mon code PHP,
au milieu de mon HTML, j'ai en quelque sorte temporairement
entré en mode PHP.
Je vous appelle d'une fonction spéciale appelée print r.
Cela signifie imprimer récursive, et ce qu'il fait est qu'il imprime récursivement
toute variable vous le remettre, point-virgule, sortie mode PHP.
Et l'étiquette avant vous donne texte pré-formaté,
texte d'espace mono de sorte que chaque espace dont vous avez réellement le voir.
Elle ne disparaît pas. Quelle est la poste?
Eh bien, ce qui est intéressant et convaincant sur PHP
est que chaque fois que vous soumettez un formulaire en utilisant get ou post
tout ce qui est soumis à votre navigateur par un
PHP lui-même comprend ce à quoi les paires clé-valeur sont,
chiffres sur si il ya des signes d'égalité, des figures si il ya un point d'interrogation.
Il fait tout le travail dur pour vous, et il vous remet un tableau associatif
contenant tout ce que l'utilisateur a tapé dans le formulaire.
Eh bien, ce qui ne les champs ont cette forme?
>> Il avait 4 champs.
L'un était un champ de texte appelé nom.
L'une était une case à cocher appelée capitaine.
L'un était un bouton radio appelée sexe,
et un était un menu déroulant appelé dortoir,
si remarquerez lorsque j'imprime récursivement
le contenu de cette variable particulière.
Il s'agit d'une variable globale spéciale appelée $ _POST littéralement, tout en majuscules.
Il s'agit d'une variable globale spéciale que PHP crée pour vous
et les mains vers vous afin que vous pouvez accéder à tout
qui a été soumis par l'intermédiaire d'un formulaire par l'utilisateur.
Et en appelant r impression sur elle, vous ne feriez pas cela dans une application normale.
Nous faisons cela pour voir l'intérieur de cette variable,
et ce qui est à l'intérieur de celui-ci, eh bien, 4 touches,
4 paramètres http, pour ainsi dire,
nom, le capitaine, le sexe, le dortoir, puis les valeurs que l'utilisateur
tapé avec une exception.
J'ai fait de type D-A-V-I-D.
J'ai coché la case, même si, pour les hommes, qui, apparemment, a présenté une valeur
d'un peu m d'être succinct.
>> Quand j'ai sélectionné Matthews c'est la valeur qui s'est choisi,
et celui-ci est un peu stupide, mais c'est la convention.
Quand j'ai coché la case, une valeur de sur, «on», s'est soumis à la case.
Si je ne l'avais pas cochée, aucune valeur aurait été envoyé que ce soit.
C'est juste nous donner un aperçu de ce qu'il ya dedans de cette variable globale spéciale,
et il est si spécial que ça s'appelle une variable super-globale.
Il existe partout pour vous au sein de votre code de sorte que vous pouvez réellement y accéder.
Ce n'est pas que contraindre, nous allons donc utiliser effectivement la super globale
et effectivement essayer d'enregistrer quelqu'un.
En froshims1 je vais faire un changement.
Je change l'action à register1.php,
et je fais autre chose.
J'étais un peu gêné par la qualité de ma page Web là-bas.
Il est assez hideuse, honnêtement, il s'avère
que vous pouvez utiliser très facilement sur le Web
d'autres personnes du code JavaScript, CSS des autres
qu'ils ont écrit et open source et disponible sous forme de bibliothèque,
pour ainsi dire, et, par exemple, ici, je suis en utilisant une bibliothèque libre,
un tas de code que quelqu'un d'autre a écrit.
>> Twitter est arrivé à écrire ce code, et cela s'appelle la bibliothèque bootstrap,
et c'est juste un tas de feuilles de style CSS, un tas de fichiers. css
que quelqu'un d'autre a écrit et compris comment obtenir tout agréable et jolie
de telle sorte que des gens comme nous peuvent vous inquiétez un peu moins sur l'esthétique et de se concentrer beaucoup plus
de la logique et de la programmation réelle.
En le reliant avec ce tag, qui est la même étiquette que j'ai utilisé pour styles3.css rappelez-vous plus tôt,
J'ai maintenant accès à un fichier appelé bootstrap.min.css.
Min signifie simplement qu'ils l'ont minified et ils ont réussi à se débarrasser de tout l'espace blanc et ainsi de suite
juste pour s'assurer qu'ils ne sont pas m'envoyer plus d'octets que j'ai réellement besoin.
Mais il ya dans tout un tas de CSS, donc si je maintenant ouvrir la version 1 de Frosh IMs
remarquerez que mon dossier est certainement plus joli.
Maintenant, il est encore juste en noir et blanc, mais remarquez que juste en utilisant leur feuille de style
et l'utilisation de certaines fonctionnalités de ce sur mon formulaire, ce n'est pas étonnant,
mais il est certainement plus propre qu'elle ne l'était avant, et que le projecteur n'est pas lui rendre justice.
Il ya peu de lignes grises autour des boutons et dans le champ de texte ici,
mais il est certainement plus propre qu'elle ne l'était auparavant.
>> Maintenant, pour être honnête, je ne dois changer mon code un peu.
Ceci est la version 1, et notez que j'ai utilisé quelques balises de nouvelles,
et honnêtement, je n'avais aucune idée de comment faire cela jusqu'à ce que j'ai lu la documentation
pour la bibliothèque bootstrap de Twitter, et ils m'ont dit que si vous voulez utiliser notre bibliothèque
utiliser un élément fieldset l'intérieur de votre formulaire,
mettre le mot que vous souhaitez afficher à côté d'un champ à l'intérieur d'une balise label,
puis donner à votre entrée un nom, comme avant,
et ensuite pour la case à cocher, non seulement vous l'envelopper dans un élément de l'étiquette,
vous utilisez quelque chose qui s'appelle une classe, donc nous n'avons pas vu cela avant,
mais vous verrez cela dans l'un des courts métrages pset 7 ont.
Une classe CSS vous permet de faire quelque chose de très similaire à l'ID,
mais avant quand nous avions un ID avec le symbole #
qui est pour un et un seul élément.
Ce qui est bien, c'est que la classe des éléments multiples peuvent avoir la même classe
ou la même chose CSS qui lui est appliquée.
>> Mais encore une fois, plus de celles à court, et le reste de ce est il suffit de copier et coller
de leur documentation où j'ai ajouté une étiquette ici et là.
Et à la fin, parce que j'ai inclus la balise de lien en haut,
tout a l'air plus joli automatiquement
simplement en ayant marqué ma page d'une manière qui
Twitter prévu, et il ya tellement de façons différentes
de le faire, et c'est en effet tout à fait approprié.
A ce point au cours du semestre, comme vous le verrez dans les spec pset des 7,
Googling autour, à lire sur les bibliothèques, en utilisant le CSS des autres
et JavaScript afin de résoudre les problèmes connexes
au problème posé lui-même est certainement encouragée et est le moyen le
le Web est construit de nos jours, en se tenant debout sur les épaules des autres
de sorte que vous pouvez vraiment vous concentrer sur les problèmes nouveaux et intéressants.
Mais nous allons maintenant nous concentrer sur, encore une fois, la logique.
>> C'était un petit détour sur l'esthétique juste pour vous montrer la direction dans laquelle vous pouvez aller.
Je vais revenir à la plus laide une pour l'instant juste parce que
il n'y a pas de distractions avec des trucs sur Twitter, et laissez-moi aller de l'avant et d'ouvrir
froshims2, ce qui, encore une fois, ne diffère que par l'action, register2.php,
et nous allons jeter un oeil à ce que l'effet est ici.
Laissez-moi aller de l'avant et taper David.
Je ne vais pas être le capitaine de ce temps.
Je dirai homme, Matthews registre.
Merde. D'accord, c'est une vis sur ma partie.
Stand by.
Register2, ligne 22, si elle est vide ou, désolé.
Nous allons recharger.
Bon, au moment du dépôt de ce formulaire ce qui s'est passé?
J'ai tapé dans David, vérifié mâle, cliqué Matthews, registre.
Vous êtes inscrit. (Eh bien, pas vraiment.)
Il s'agit clairement d'un pas au-delà de l'impression sur le contenu de certaines variables,
mais ce qui est en train de faire de ce fichier?
En register2.php
remarquerez que j'ai un nouveau code.
A l'intérieur de ma balise body j'ai essentiellement un if else construire,
mais parce que je suis le co-mingling cela avec un peu de HTML
Je dois entrer et sortir du mode PHP-et-vient, nous allons donc voir ce que je fais.
>> Dans la première ligne ici, je dis que si c'est le cas
que le super post mondiale est vide pour la clé de nom,
en d'autres mots, si l'utilisateur ne m'a pas donné de valeur pour nom, sous la forme,
puis vider va revenir vrai parce que la valeur est vide.
Ou-remarquerez les barres verticales, si le sexe est vide
l'intérieur de cette spéciale superpuissance mondiale, ce qui, encore une fois, représente le contenu de la forme,
ou le dortoir est vide, alors je vais aller de l'avant et de crier à l'utilisateur.
Comment? Eh bien, remarquez que je vais dire que vous devez fournir votre nom, le sexe, et le dortoir.
Nous allons effectivement induire cette erreur.
Permettez-moi de revenir à ma forme. Permettez-moi de recharger pour l'effacer.
Et je vais leur donner de David, et ils n'ont pas besoin de savoir où je vis.
Inscrivez-vous. Apparemment, je n'ai pas besoin de leur dire où je vis.
Vous devez fournir votre nom, le sexe et le dortoir. Retour.
>> Et je ne pouvais cliquer pour revenir à cette forme, mais pourquoi est-ce?
Eh bien, dans ce cas, le nom n'était pas vide, mais le sexe était, et dortoir était,
si cette expression toute évalué à vrai, et même si la syntaxe est un peu nouveau,
encore une fois, nous entrons dans le mode PHP, familier instruction if,
mais la nouvelle partie ici est juste ce colon, et j'avais merdé en omettant une parenthèse
par accident, mais remarquez le côlon, ce qui signifie
même si nous sommes de quitter tout mode PHP
qui suit doit être recracher in extenso dans le navigateur
jusqu'à ce que vous voyez un autre bloc, comme nous le faisons ici,
Dans ce cas, vous devriez plutôt cracher sur ce
jusqu'à ce que le endif, donc une syntaxe légèrement différente
qui me permet de basculer entre HTML et PHP.
Nous pouvons nettoyer tout ça un jour, mais pour l'instant,
c'est un peu une façon convaincante de vérification des erreurs dans le formulaire.
>> Maintenant, je dis que vous n'êtes pas vraiment inscrit car il est évident que nous n'avons rien fait, mais les données,
nous allons donc effectivement essayer de faire quelque chose de cool.
En froshims3 la seule différence est que je vais soumettre à register3,
si le code HTML, il ya le même.
En register3 remarqué.
Celui-ci est assez sexy.
Au sommet, je suis en utilisant une instruction require, donc c'est comme # include.
Cette fois, ce n'est pas stdio.h ou quelque chose comme ça.
C'est une bibliothèque PHP, et celui-ci est appelé PHPMailer.
Comment savais-je inclure précisément cette chaîne entre guillemets?
Je l'ai lu dans la documentation, alors quand on m'a dit que mettre ceci au début du fichier
si vous souhaitez utiliser une bibliothèque spéciale appelée PHPMailer qui fait ce qu'il dit.
Il vous permet d'envoyer des e-mails via PHP.
Maintenant, nous allons faire défiler plus bas.
>> Remarquez d'abord que je suis en mode PHP tout ce temps,
alors maintenant remarquer ici-bas après avoir importé la bibliothèque,
pour ainsi dire, je fais quelques vérifications.
Si c'est le cas ce nom n'est pas vide
et le sexe n'est pas vide, notez les points d'exclamation-
et le dortoir n'est pas vide, alors l'utilisateur a logiquement complété le formulaire, au moins assez.
Je ne m'inquiète pas si ils sont capitaine ou non. J'ai juste besoin de leur nom, le sexe, et le dortoir.
Si elles ont rempli les de telle sorte qu'aucune de ces champs sont vides
ce qui est légèrement nouvelle syntaxe.
PHP, en passant, est un langage de programmation orienté objet
que certains d'entre vous souvenez peut-être de APCS ou analogues.
Pour l'instant, si inconnu, il suffit de savoir que pour utiliser cette bibliothèque
vous devez écrire une ligne de code comme celui-ci en utilisant un nouveau mot-clé,
littéralement un nouveau mot-clé appelé de nouveau.
Mais au-delà, nous avons une certaine syntaxe familière.
C'est un opérateur flèche, ce qui est similaire à ce que nous avons utilisé pour les structures dans le cadre de pointeurs.
Pour aujourd'hui PHP n'a pas de pointeurs,
mais nous savons maintenant que l'intérieur de la variable électronique
est essentiellement une sorte de pointeur vers une bibliothèque spéciale
que quelqu'un d'autre a écrit, et si je veux accéder à des fonctionnalités spécifiques
l'intérieur de cette bibliothèque que je fais, comme en C, utilisez l'opérateur flèche,
même si elles ne sont pas réellement des pointeurs.
C'est en quelque sorte propre version de PHP de celle-ci.
Cela signifie aller à la bibliothèque et appeler la fonction IsSMTP.
SMTP, rappel, de nos guerriers du Net se réfère au courrier électronique,
et cela signifie simplement utiliser un serveur de messagerie pour cette inscription Frosh IM.
>> Qu'est-ce que je veux hôte à utiliser?
Eh bien, Harvard, si vous Google autour, a un serveur de messagerie appelé smtp.fas.harvard.edu.
Si vous accompagnez à la maison ou vous vivez sur un réseau Comcast
il pourrait être quelque chose comme smtp.comcast.net.
Il dépend totalement de l'endroit où vous vivez et qui est votre fournisseur d'accès.
Après ça, je vais mettre mon adresse à partir arbitrairement à jharvard@cs50.net.
Je suis ensuite aller pour régler le satisfaire pour être jharvard@cs50.net.
La seule façon que je savais que ces fonctions ont été appelées setFrom et AddAddress
est, encore une fois, j'ai lu la documentation.
Ce n'est pas genre de magie connu de tous les programmeurs.
Puis-je définir un objet d'une «inscription».
Et maintenant, cette ligne est un peu moche parce que ce qui ne signifie pas l'opérateur point en PHP?
Quelqu'un sait?
Concaténer.
En C, il est une douleur dans le cou pour concaténer 2 chaînes en même temps.
Vous avez à traiter avec malloc ou realloc tout ou partie de ce genre de choses
seulement d'étendre la longueur d'une chaîne.
En PHP, JavaScript et dans d'autres langues
vous pouvez généralement le faire avec un seul caractère.
Dans ce cas, point signifie profiter de cette chaîne ici
pour ajouter des données de cette chaîne.
>> Oh, et en passant, il annexer à cette chaîne,
qui se trouve être une variable de l'intérieur que super-globale.
Ensuite, ajouter à cela une nouvelle ligne, de sorte que tous ces points seulement dire
continuer à faire une chaîne de plus en plus gros et plus grand,
et vous n'avez pas à vous soucier du tout de malloc ou similaire dans un langage comme celui-ci,
et il ya d'autres façons de le faire, mais c'est l'un des plus rapides
les moyens de la mettre en page.
Quel est ce fait?
Il s'agit de créer un corps de l'email que va dire Nom: Capitaine: Sexe: Dortoir:
tous sur des lignes distinctes, puis enfin,
une ligne de code, et je vais ignorer cela pour l'instant.
Si == false signifie simplement que si quelque chose s'est mal passé,
mais la magie qui se passe ici.
Mail Envoyer signifie envoyer cet e-mail.
Voyons voir ce que le résultat net est.
A la fin du fichier, notez qu'il va dire que vous êtes inscrit vraiment
si je suis si loin.
Si, cependant, l'utilisateur vis en place, vous remarquerez que nous avons commencé cette
si l'état ici, si elle n'est pas vide et non vide
et ne se vide pas nous envoyer l'e-mail.
Sinon, nous allons envoyer cette ligne de code,
qui va avoir pour effet, comme vous le verrez dans pset 7, de rediriger l'internaute
retourner d'où ils venaient, froshims3.php.
>> Je croise les doigts, sinon ça va être la démonstration la plus décevante aujourd'hui.
Nous y voilà.
Permettez-moi d'ouvrir ma boîte de réception e-mail pour jharvard dans Gmail.
Aucun e-mail dès maintenant. Très bien.
Maintenant, laissez-moi ouvrir froshims3, qui est le troisième et dernier exemple que nous allons examiner ici.
Ok, on y va.
Nate, il sera capitaine, homme, de, disons, Apley.
Inscrivez-vous. Ok, vous êtes inscrit vraiment.
Maintenant, si je défiler à mon e-mail, oh, mon Dieu.
Je viens dynamiquement envoyé un courriel sur le Web.
>> Laissons là-dessus.
Une vidéo est à venir pour la conférence nous a manqué. Rendez-vous la semaine prochaine.
[CS50.TV]