DOUG LLOYD: Donc, nous avons fait beaucoup de travail en C, et C est un vraiment cool langue, car il vous donne la capacité de vraiment plonger faible niveau dans vos programmes. Nous arrivons à faire les choses comme vraiment minutes que la manipulation octets individuels de mémoire. Rappelons que les pointeurs vraiment nous permettre cette souplesse. Mais avons-nous toujours besoin d'avoir ce niveau de détail à grain fin dans nos programmes? Probablement pas, non? Et si nous allons avoir un compromis entre être capable de faire vraiment, vraiment choses minute et vraiment, vraiment de grandes choses que nous ne devons pas penser à propos, nous ne devons pas mettre en œuvre ces très grandes idées si ils sont déjà construits en pour nous, généralement pour la construction de gros programmes ou de grands projets, nous allons probablement se tromper sur le côté ayant de plus des trucs de langue construite en pour nous, au lieu d'avoir les trucs de bas niveau. Et voilà où PHP vient vraiment. Or, l'une des raisons que nous enseignons dans PHP CS50 est qu'il est fortement inspiré par C. Et en fait, à mon avis, Il ya vraiment deux langues progénitrices qui sont très courant de nos jours. C et LISP. Et ils sont langues progénitrices parce que chaque autre programmation moderne langue qui a développé depuis lors, est inspiré par un ou l'autre syntaxiquement. PHP est très similaire syntaxiquement à C, alors que des langages comme Scheme, par exemple, qui vous avez peut-être entendu parler, est fortement inspiré par une langue appelé LISP, qui est une langue plus. Donc, la raison pour laquelle nous enseignons PHP dans CS50 est que, en sachant C comme fondamentalement comme vous le faites en ce moment, ramasser PHP, qui vous donne la capacité de faire beaucoup plus de choses au niveau que fait C, est pas que beaucoup d'un obstacle, parce que vous avez déjà idée de base de la syntaxe. C est là depuis presque 45 ans à ce point. PHP a été autour pendant environ 20 années. Et en ce que 25 ans entre les deux, les programmeurs déterminé qu'ils seraient beaucoup plus avoir plutôt plus élevés des capacités de niveau, et les erreurs et les luttes des 20 ans entre les deux conduit à PHP et autres langages modernes. Un grand choix de PHP langue pour le logiciel que pour allow-- logiciel that-- où vous besoin de faire des choses que, dans C est en fait complexe. Ainsi, par exemple, en travaillant avec des chaînes en C est très compliqué, parce que comme nous le savons, chaînes en C sont vraiment juste des tableaux de caractères. Il est pas un type de données intégré. Ou peut-être plus fondamentalement, quelque chose que nous ne couvre même pas en C, Que faire si vous devez faire certains réseaux informatiques? Bien? C a la capacité de le faire, mais il est si arcane et si difficile de le faire réellement. Ce ne serait pas bien si le langue avait un moyen simple et intégré à mettre en oeuvre en réseau? Et PHP est un langage qui fait que, ou facilite ce que, un peu plus. Comme je le disais, PHP est très fortement inspiré par C. La syntaxe est très similaire. Et il devrait, espérons rendre le transition de l'un à l'autre un peu plus doux que certains d'autres langues pourraient être. Pour commencer à écrire PHP, ouvrez juste en haut un fichier avec l'extension de fichier .php. Techniquement, cela est pas en fait nécessaire, mais si vous voulez des choses comme la syntaxe soulignant en IDE, de sorte que le type noms ou noms de variables, fonctions, vous le savez, les mots-clés de la langue sont mis en évidence dans un couleur spécifique, vous généralement vouloir nommer vos fichiers avec une extension de fichier particulier. Donc, nous avons appelé notre fichier avec un .php extension, mais aussi avec PHP, tout le code PHP en ce que nous écrivons fichier doit être enfermé dans ces PHP séparateurs que nous voyons ici sur l'écran. Equerre? Php pour commencer. Ensuite, nous écrivons tous nos PHP code que nous voulons entre les deux. Et alors ? équerre pour fermer. Si nous ne faisons pas cela, alors ce qu'il va se passer? Il ne va pas tomber en panne. Il ne va pas vraiment ruiner notre programme. Mais il ne va pas avoir l'effet que nous voulons. Qu'est-ce qui va se passer, vraiment, est que lorsque nous essayons et exécuter ce programme, tout pas entre ces délimiteurs va être imprimé verbatim. Il ne va pas effectivement exécuter le code, il va tout simplement imprimer textuellement. Maintenant, pourquoi est le cas? Donc C est ce qui est connu comme un langage compilé. Vous êtes probablement familier avec l'étape de réalisation de vos programmes, tournant les fichiers .c et .h en un seul exécutable avec make, notamment à l'aide Clang que notre compilateur. PHP, cependant, ne fonctionne pas cette équivalente. PHP est ce qu'on appelle un langage interprété. Et qu'est ce que ca veut dire? Eh bien, cela signifie que nous ne disposons pas de convertir notre code source de zéros et de uns préalablement. Au contraire, il ya un programme, qui est aussi appelé PHP, qui comprend PHP et peut sorte de rendre à la volée. Cela ne veut pas vraiment tout à fait exacte, mais il est une très bonne analogie de ce qui se passe. Il est l'interprétation de ceux zéros et des uns à la volée. Et donc si elle ne sait pas la façon de traiter quelque chose, si elle ne sait pas comment processus PHP, vous avez probablement voulu mettre ce texte en bas, à droite? Vous avez probablement voulu mettre le code en là, même si elle est non pas entre PHP-- les séparateurs de PHP. Mais-- si ça ne va pas à supprimer pour vous, il va juste jeter essentiellement cela. Donc, il va imprimer sortir à l'écran. Cela semble comme elle est une mauvaise chose, mais en réalité il est va être un très bonne chose, comme nous allons voir lorsque nous parlons de Développement web PHP, parce que cela signifie que nous pouvons intercaler PHP et HTML. Nous pouvons les utiliser ensemble pour créer une page web plus dynamique. Mais plus que dans la vidéo sur le développement web PHP. Alors, quelle est la syntaxe de PHP? Voilà ce que cette vidéo est tout au sujet. Parlons-en. Donc, pour commencer, les variables. Les variables PHP existent. Il ya juste deux gros les différences de C. La première est qu'il ya aucun type prescripteur. Nous ne disposons pas de dire int, char, float, tout ça. Nous ne devons pas faire ça. PHP est un langage moderne. Il peut comprendre ce que vous êtes essayer de faire ou de faire une meilleure deviner ce que vous essayez de faire. Voilà donc assez agréable. L'autre chose est que tous les variables Les noms doivent commencer par un signe de dollar. Voilà juste quelque chose pour s'y habituer. Il est un peu bizarre, parce il est donc que PHP peut comprendre ce qui est une variable et ce qui l'est pas. Ainsi, chaque nom de variable commence par un signe de dollar. Donc, en C, nous pourrions dire quelque chose comme ça, int x = 54. Nous ne devons pas faire ça en PHP. Nous pouvons simplement dire $ x = 54. Et nous pourrions dire, par exemple, en C, si nous avions inclus le livre-.h CS50 fichier d'entête, nous pourrions dire expression de chaîne = "Ceci est CS50." Nous ne devons pas le faire en PHP, cependant. Nous pouvons simplement dire $ phrase = "Ceci est CS50." Et en fait, la chaîne est maintenant un type de données intégré en PHP, ou plutôt PHP comprend ce qui est une chaîne. Il est séparé d'un tableau des personnages comme il est dans C. Tout votre favori instructions conditionnelles de C sont toujours disponibles pour vous à utiliser. Donc, pas de grande transition il. Nous pouvons say-- nous pouvons avoir si les déclarations de ce genre. si $ y 43, ou $ z = 15. Voilà donc assez simple. Nous pouvons avoir si et d'autre. Nous pouvons avoir si et autre si. Et remarquer quelque chose assez agréable ici, et cela est une sorte de l'un de ceux avantages de PHP par rapport à C, un avis quelle fonction nous ne sommes pas en utilisant ici? Nous utilisons == pour comparer une variable $ nom, à une chaîne. Nous ne pouvions pas le faire en C, à droite? Nous avons dû utiliser une fonction appelée StrComp ou StrEndComp ou tout de ses cousines connexes. Et ainsi, nous voyons déjà ces avantages. Nous ne disposons pas de faire quelque chose aussi stupide ou peut-être intuitif comme appeler une fonction appelée StrComp si je veux juste tester si une valeur est égale à une chaîne. Je ne pouvais tout simplement utiliser est égal à égal, comme je ne pouvais rien faire d'autre. Donc, il ya un avantage. Parfois, d'ailleurs, vous pourriez voir ailleurs si en un seul mot, elseif. Et cela est OK en PHP ainsi. Donc, parfois, vous pourriez voir cela. Il est pas une faute de frappe. PHP comprend réellement elseif. Je ne sais pas pourquoi ils décidé de mettre en œuvre ce que, mais comme nous l'avons vu à plusieurs reprises tout au long de nos vidéos jusqu'ici, nous aimons si les programmeurs nous pouvons faire les choses rapidement, afin de se débarrasser de cet espace est apparemment un grand avantage. Voilà donc si et elseif. Nous avons aussi l'opérateur ternaire, rappel interrogation côlon, formulaire très court si quelque ou de branchement conditionnel. Et apparemment, dans ce domaine, ce que nous essayons de faire ici est assigner la variable $ lettre soit vrai ou faux, selon que $ var est un caractère alphabétique. Donc, cela est assez similaire à isalpha que nous sommes familiers avec de C. Cette est une sorte de l'équivalent en PHP. La fonction est apparemment appelé ctype_alpha, mais voilà comment nous le faisons en PHP. Donc, tout cela va être est, si $ var est une lettre, lettre $ est vrai. Si $ var est pas une lettre, $ lettre est fausse. Nous avons également des déclarations de commutation encore. Nous rappelons ceux de C ainsi. Au sommet il, voilà comment nous faisons quelque chose comme int get ou obtenir chaîne. Alors que PHP a construit en. Nous ne devons plus la bibliothèque de CS50. Nous pouvons simplement utiliser la fonction readline. Qu'est-ce que cela va faire est d'impression le message, "Votre état, s'il vous plaît ", puis clignote rapidement attente pour l'utilisateur d'entrer des informations. Maintenant, remarquez quoi d'autre nous pouvons faire avec interrupteur. Si vous avez utilisé avant, Vous vous souviendrez que l'interrupteur est limitée à peu près en nombres entiers et personnages, mais maintenant nous pouvons utiliser des chaînes. Et en fait, l'instruction switch PHP est un peu plus souple que son cousin de C. Boucles. Tout comme conditionnelles, tous vos vieux favoris sont toujours là. Nous avons tout en boucles qui comptent 1-100 dans ce cas. Nous avons tout faire boucles qui comptent de 1 à 100, et nous avons pour les boucles qui comptent de 1 à 100. Donc pas grand saut il. La syntaxe est assez près exactement la même, sauf que maintenant nous utilisons dollar signe variable au lieu de déclarer des variables entières ou quelque chose comme ça pour nos compteurs. Voici où les choses deviennent un beaucoup mieux que C, cependant. Tableaux. Alors souvenez quand nous étions parler C, afin pour nous de grandir et rétrécir ensembles d'informations, nous devions trier du défaut à cette idée d'une liste chaînée, parce tableaux C ont été fixés dans la taille. Nous ne pouvions pas les réduire. Nous ne pouvions pas les cultiver. Nous avons dû réaffecter la mémoire et faire tout cette folie ou utiliser les listes chaînées, qui prendre jusqu'à un espace assez peu plus. Mais en PHP, les tableaux sont pas de taille fixe plus. Ils peuvent se développer et ils peuvent rétrécir. Encore une fois, ces 20 ans qui existaient entre la première version de C et la première version de PHP, nous avons décidé que, vous le savez, il serait vraiment super si nous pouvions le faire. Et donc nous avons mis en œuvre cette. Donc tableaux PHP ne sont pas fixés dans la taille, et parce que PHP n'a pas vraiment avoir programmeur face à l'avant notions de types, nous pouvons mélanger des types de données dans nos tableaux, aussi. Donc, nous ne disposons même pas d'utiliser tous entiers ou tous les points flottants, nous pouvons avoir un mélange de tout différents types dans un seul tableau. Déclaration d'un tableau est assez simple. Il est juste comme toute autre variable. nums $ = array (1, 2, 3, 4), réseau étant une fonction qui est intégré dans PHP va créer un tableau pour vous. Cela crée un tableau de quatre valeurs, numéros, dans ce cas, appelés nums $. Et il ya plus d'une façon de le faire. Et nous allons voir ce lot en PHP. PHP a été développé par de nombreux différents les gens et se développe et grandit et se développe. Il ya habituellement pas seulement deux ou trois façons de faire quelque chose en PHP, il ya habituellement comme 10 ou 20. Voici juste une autre commune façon de déclarer un tableau. $ nums = CROCHET 1, 2, 3, 4. Donc, ce genre de est similaire à l'angle C br-- notation accolade, plutôt. $ - ou il serait int nums carré supports égale accolade 1, 2, 3, 4. En PHP, il est nums $ = carré supports 1, 2, 3, 4. Mais ces deux exemples me donner ici un tableau de quatre dans ce cas des entiers. Que faire si je veux virer quelque chose maintenant? Eh bien, je peux juste dire $ nums 4, qui encore une fois, nous sommes toujours en partant de 0 ici en PHP, serait la cinquième élément du tableau. Je peux juste dire que. Je ne vais pas à souffrir d'un seg faute, parce que mon tableau est juste va croître en tenir compte. Voilà assez agréable, non? Et en fait, je ne même pas besoin de préciser où je veux le mettre. Je peux juste dire ceci et juste virer à droite sur la fin, Ou je pourrais même juste dire nums $ 20 ou 1000. Il n'a pas vraiment d'importance. Il est encore juste aller virer à droite sur la fin. Je ne peux donc croître, et nous sommes as-- ne va pas couvrir ici, mais je peux raccorder ou de la bande éléments sur le tableau ainsi, et le réseau va diminuer pour accueillir que maintenant manquant ou espace vide. Il ya une autre façon de virer de bord quelque chose sur un réseau, qui est une fonction appelée array_push. Donc encore une fois, juste pour cette idée d'être en mesure de faire des choses différentes façons. Donc, nous avons vu trois façons différentes maintenant de virer de bord un autre élément dans un tableau. Donc, ce qui ajoute un autre élément à la fin du tableau de nums $. Et nous pouvons mélanger jusqu'à nos types de données. Donc, je pourrais avoir un tableau de pas 1, 2, 3, 4, 1, mais, vrai, 3, 4, où la vraie est un booléen, puis si je veux virer sur un autre élément à ce tableau, peut-être une chaîne, la chaîne «cinq», je pouvais le faire. Et maintenant, mon tableau serait être de 1, vrai, 3, 4, cinq. Le mot de cinq, pas l'entier 5. Il ya donc beaucoup de souplesse. La flexibilité devient mieux encore, cependant, parce que PHP a un support pour quelque chose appelé un tableau associatif. Et nous avons parlé vaguement sorte de tableaux associatifs à propos de C dans le cadre de tables de hachage, parce que ce que les tableaux associatifs sont vraiment tout environ sont faisant clé mappings valeur paire. Et dans ce cas, l'keys-- si nous sommes familiers avec les tableaux de C, les touches sont des numéros d'index. 0, 1, 2, 3. Et les valeurs sont ce que nous constatons que 0 tableau, tableau 1, tableau 2, et ainsi de suite. Ainsi, les touches sont des indices, et les valeurs sont ce qui est dans cet emplacement de choix, spécifié par cet indice. Mais en PHP, nous ne devons pas le faire notion de tableau 0, tableau 1, tableau 2 plus. Nous pouvons maintenant utiliser des mots réels pour mapper les touches aux valeurs. Et donc je pourrais dire quelque chose comme ça. Je pourrais créer un tableau en utilisant la crochet syntaxe comme suit. $ pizzas = crochet «fromage», puis ce genre de notation double flèche, 8.99, «pepperoni," flèche 10.99-- 9,99, et ainsi de suite. Et qu'est-ce qui se passe ici? Que vais-je en train de faire? Je crée mappages valeur paire. Donc, au lieu de dire, par exemple, 0 pizzas, des pièces 1, 2, pizzas Je peux maintenant dire pizzas fromage, pizzas au pepperoni, et se référer à des valeurs qui leur sont associés. Voici donc nos clés en vert. Fromage, le pepperoni, légumes, poulet Buffalo. Voici la flèche qui rend cette cartographie clé valeur paire. Et puis ici sont les valeurs à cet endroit de tableau. Donc, il est comme dire gamme 0 équivaut à 8,99. La clé est 0. La valeur est de 8,99. Je peux maintenant dire que le fromage de tableau, ou dans ce cas pizzas fromage, est la clé, et ce que je trouve à pizzas fromage est de 8,99. Voilà la valeur que je trouve là. Donc, je peux dire des choses comme. $ la pizza fromage = 7,99. Disons que je vais avoir une vente. Je veux dis-- Je veux abandonner le prix de la pizza au fromage. Ou je peux utiliser le légume Pizza dans le cadre d'un état, ou je peux ajouter un nouvel élément à mon tableau, juste comme je pouvais le faire auparavant. Je peux ajouter un nouvel élément à ce tableau associatif avec la touche "lard" et la valeur 13.49. Mais ce genre de introduit un problème, si vous pensez à ce sujet pour une seconde. Comment pourrions-nous itérer sur ce tableau? Droit? En C, nous voulons juste avoir un pour la boucle, en général, que irait de 0 à la taille de la matrice moins 1. Le tableau a n éléments à la indices valides sont 0 à n moins 1. Donc, nous pourrions utiliser une boucle for pour parcourir chaque élément. Mais ce est pas vraiment plus le cas, non? Maintenant, où nous avons une paire clé valeur correspondances où les clés sont des mots, comment pouvons-nous parcourons tous les mots? Eh bien, heureusement, PHP a une façon de traiter avec cela aussi, et donc nous allons sauter retour à boucles pour une seconde d'introduire une quatrième sorte de boucle qui existe en PHP appelé une boucle foreach. Et qu'est-ce une boucle foreach est fait il est fondamentalement la même idée. Vous pouvez l'utiliser pour tout type de tableau. Mais il est fondamentalement le même idée que une boucle, sauf qu'au lieu d'utiliser numéros d'index, vous venez avoir cette syntaxe bizarre où vous appelez chaque élément un nom aux fins de cette boucle. Donc dans ce cas, foreach ($ array que $ key). Fondamentalement, que ce commentaire notes, à l'intérieur de cette boucle foreach, ça va aller sur chaque single élément du tableau $, ce qui est généralement va être un tableau associatif, mais peut être vraiment tout type de réseau que vous voulez en PHP. Et chaque fois que, dans une boucle for vous pourriez ont dit $ array crochets $ i, vous pouvez simplement dire $ key. Alors que la clé de $ devient un alias pour chaque index de votre PHP tableau associatif, et ainsi vous pouvez l'utiliser comme ça. Ainsi, par exemple, nous avons maintenant obtenu notre tableau de pizzas. Je suis genre de glissai dans le coin, il y afin que nous puissions l'utiliser pour faire un exemple rapide. Si je dis foreach ($ pizzas $ Pizza), eh bien, ce qui se passe? Eh bien, je vais pour parcourir tous les seul élément des pizzas array $, et, ce faisant, je vais appeler chaque élément, quand je suis à l'intérieur du corps de cette boucle, $ pizza. Voilà donc une sorte de stand-in, le rappel, que la pizza $ est un stand-in pour dire Pizzas $ crochets $ i si nous utilisions une boucle, où nous pourrait passer de $ i = 0 à, dans ce cas, $ i = 3. Si nous ne disposons pas des paires de valeurs clés ici, ce serait l'élément 0, 1, 2, 3, et nous devrions utiliser une boucle for aller $ 0 pizzas, pizzas $ 1, $ 2 pizzas, $ 3 pizzas. Alors maintenant $ juste pizza est substitue pour cette touche individuelle. Donc, ce que cela va imprimer? Je imprimant $ pizza. Que vais-je trouver at-- si je imprimer $ pizzas, $ i? Droit? Si je vais à imprimer l'élément i de pizzas, que vais-je imprimer? Je vais imprimer le Les valeurs à cet endroit, non? Comme si nous faisions dans le contexte de C, nous utilisons habituellement pas notre iterator variable int i = 0, i est inférieur à 3, i ++, pour imprimer à 0, 1, 2, 3. Nous l'impression de tableau 0, tableau 1, tableau 2, tableau 3. Et donc ce que cela imprime est-ce. Il est la liste des prix. 8,99, 9,99, 10,99, 11,99. Maintenant une note rapide ici. Une boucle de foreach ne signifie pas nécessairement imprimer des choses dans l'ordre. Il est pas garanti. Il le fait habituellement. Il est généralement basé sur l'ordre dans lesquels éléments sont ajoutés à la matrice, si juste garder cela à l'esprit. Il pourrait ne pas être dans l'ordre. Mais une boucle foreach va parcourir à travers chaque élément du tableau en question. Dans ce cas, encore une fois, ce tableau est $ pizzas. Je peux changer la syntaxe, cependant, si Je veux à la fois la clé et la valeur. Au lieu de dire pizzas $ que $ la pizza, je peux le dire. Et si vous regardez ce que je surligné en vert ici, il ressemble à une cartographie clé valeur paire. Et si vous-- même si vous n'êtes pas entièrement sûr de ce qu'il va faire, vous pouvez probablement le deviner que $ garniture va être la clé dans cette affaire et $ prix va être la valeur. Donc, je remplace maintenant tous les éléments de $ pizzas comme une paire de valeur de clé, et maintenant je peux me référer à la clé et la valeur, ce qui pourrait être utile, par exemple, comme suit. "Un ensemble» - ce qui est beaucoup de impression passe ici-- "dans son ensemble" topping "pizza coûte $" prix, puis Je imprimer une période et une barre oblique inverse n. Alors maintenant, je préavis à nouveau avoir accès à une clé, $ garniture, et une valeur, $ prix. Donc, pouvez-vous deviner ce que cela va imprimer? Il ya beaucoup de déclarations d'impression, mais il ya une seule barre oblique inverse n, donc ça va d'imprimer quelque chose sur un entire-- sur une seule ligne de code. Si je peux me référer à la clé et la valeur, alors maintenant, au lieu de simplement pouvoir pour imprimer les prix, Je peux imprimer quelque chose comme ça. "Toute une pizza au fromage coûte 8,99 $." Et maintenant, je suis en utilisant la totalité de la keys-- le fromage, le pepperoni, légumes, Buffalo chicken-- et les valeurs. 8,99, 9,99, 10,99, 11,99 Alors qui est juste une façon différente faire une boucle foreach qu'au lieu de tout en vous donnant accès aux valeurs, il donne juste vous-- il vous donne accès aux clés et les valeurs. Donc, l'impression de l'information. Je l'ai déjà fait quelques différentes façons, vous pourriez avoir remarqué. Les deux fonctions que nous avons principalement vu les imprimés et l'écho. Et pour à peu près toutes les intentions et fins, ils sont exactement les mêmes. They're-- il ya une très subtile différence qui est même pas la peine entrer dans, mais pratiquement partout vous pouvez utiliser impression que vous pouvez probablement utiliser écho ainsi. Et cela ne l'a que deux. PHP a beaucoup de différent façons d'imprimer des choses, et il a aussi les moyens d'intégrer variables dans le milieu de chaîne. Donc, rappeler à partir de C, avez-vous rappeler ce que la fonction nous pouvons utiliser pour substituer les variables dans les choses que nous voulons imprimer? Vous utilisez probablement cette fonctionner beaucoup. printf, non? Donc, c'est ce que nous avions avant l'intérieur du contexte de notre boucle foreach. Nous avons eu ces cinq déclarations d'impression séparées, parce que ce fut la seule manière que je connais vraiment au moment comment imprimer des messages. Je ne savais pas comment intégrer la variable $ garniture dans mon code PHP. Eh bien, si je viens de prendre une conjecture sauvage, printf, il aurait effectivement travaillé. printf est une fonction que je peux utiliser en PHP, tout comme je peux l'utiliser en C. Et si quelque chose comme cela, printf, encore une fois, nous sommes au courant. Le premier% s est remplacé avec la valeur de $ garniture. Le second% s est remplacé avec la valeur de $ prix. Et donc je suis interpellation, qui est juste une manière de fantaisie de dire que je suis coller le variables dans cet endroit. Donc, je suis brancher $ garniture où le rouge% s est et $ de prix où le bleu% s est, et puis je voudrais faire passer le message, "Toute une pizza au fromage coûte 8,99 $." Pas la seule façon que je peux le faire, cependant. Peut-être que je voudrais utiliser cette méthode. Ceci est en fait ce qui est plus communément appelé interpellation variable. Je peux utiliser un écho. Je pourrais utiliser une impression aussi, comme nous le verrons. Mais ce qui se passe ici? Tout d'abord, je dois échapper le signe du dollar. Car rappelez-vous, quand nous étions effectivement impression des prix des pizzas, En fait, je les formatant comme chiffres monétaires avec un signe de dollar. Mais nous utilisons aussi des signes dollar pour représenter les noms de variables en PHP, et en particulier quand je suis en utilisant cette méthode de l'bouclés variable accolade méthode d'interpellation, je dois pour échapper à mon signe du dollar de sorte qu'il ne pense que je parle d'une variable. Il va effectivement, imprimer littéralement un signe de dollar. Donc sorte d'analogie à ce que vous voyez à la fin il. Il ne fait pas réellement Imprimer barre oblique inverse n, non? Il imprime un caractère de nouvelle ligne. Cette est-- ça ne va pas à Imprimer signe barre oblique inverse du dollar, il va imprimer simplement un caractère de signe dollar. Même idée. Les séquences d'échappement, ce qui ces choses sont appelés. Mais remarque que je ne fais pas toute sorte de% s substitutions, Je suis juste brancher littéralement dans ces variables. Et donc dans this-- ce qui se passerait ici est que la valeur de topping-- $ de nouveau, juste garder avec ce que nous avons été parler de fromage afin far-- recevrait branché là. Et $ prix serait quelque valeur est à pizzas, crochets, fromage, qui était 8,99. Et donc ce serait également imprimer "Toute une pizza au fromage coûte 8,99 $." Et comme je l'ai dit, je pourrais utiliser imprimer ici à la place de l'écho, et la fonctionnalité soit à peu près exactement la même chose. Il devrait afficher la même chose. Il ya une autre façon de le faire, et ceci est un autre avantage PHP travailler avec des cordes. Nous pouvons faire la concaténation de chaîne. Nous pourrions le faire en C, aussi, en utilisant une fonction appelée strcat, mais encore une fois, nous avons dû appeler des fonctions distinctes. Il était tout ce gâchis de le faire. Nous avons dû inclure livre-string.h. Il était une production, à droite? Mais maintenant, je peux utiliser cet opérateur dot pour concaténer des chaînes ensemble. Donc, je suis concaténation "ensemble" et alors tout ce que la valeur de $ garniture est, et puis un autre chaîne, "les coûts de pizza $" puis ce que la concaténation la valeur de $ prix est, puis à la fin je suis virant sur la période barre oblique inverse n. Et ce serait aussi imprimer "dans son ensemble" - encore une fois, si nous parlons de la première élément de pizzas qui array-- "Toute une pizza au fromage coûte 8,99 $." Période, barre oblique inverse n, encore une fois, avec la garniture de $ et le prix substitution pour ce que nous avions indiqué dans notre foreach boucle comme la cartographie clé valeur paire. PHP peut manipuler des fonctions. Fonctions étaient en quelque sorte intégrante de C, comme nous l'avons vu. Comme les variables, nous ne devons pas spécifier le type de la fonction de retour, car il n'a pas vraiment d'importance. Et nous ne spécifions pas le les types de données de tous les paramètres, parce qu'ils ne sont pas vraiment matière, comme nous l'avons vu en PHP. Chaque fonction est introduit avec le mot-clé function. Voilà comment nous indiquons PHP ce dont nous parlons est une fonction. Et nous ne devons pas traiter principale à tous, parce que l'interprète, le PHP interprète, fonctionne de haut en bas, indépendamment. Si elle voit que vous pouvez faire un appel de fonction, il va aller chercher l'appel de fonction, même si elle vient plus tard. Mais il va lire de haut en en bas, donc on n'a pas besoin de préciser, voici où vous commencez. Vous commencez sur la ligne 1 de votre PHP et de travailler à partir de là. Donc, voici comment nous créerions une fonction appelée hard_square. Il prend une apparence paramètre, que je suis appelant $ x. Cette fonction est compliqué juste pour illustrer diverses choses. Nous avons toujours des valeurs de retour. Je suis en utilisant une boucle for ici. Mais il est fondamentalement juste, ce que cela revient à est seulement $ x $ x fois. Ce que je suis en train de faire est simplement d'ajouter x 0 à x fois ou $ x à zéro $ x fois. Mais il est effectivement exactement le même que la multiplication $ x fois x $. Je ne peux toujours retourner une valeur, dans ce cas $ result, et je me suis fait une fonction en PHP. Voici comment vous pouvez utiliser dans son contexte. Alors peut-être que je suis à l'intérieur de certains fichier PHP. Remarquez là que le bleu Je l'ai utilisé mes séparateurs de PHP, équerre interrogation php. Entre ceux qui sont tous PHP que je veux écrire. Donc, je suis apparemment va get-- Je vais demander à l'utilisateur de me donner un numéro, magasin qui variable magasin dans cette variable $ x, tout ce qu'ils me donnaient. Ensuite, je vais faire écho hard_square de cette valeur, et apparemment aller de virer de bord sur une nouvelle ligne ainsi, puis plus tard je vais définir la fonction de façon hard_square que lorsque je fais le appeler à hard_square, il sait de quoi je parle. Maintenant, je pourrais aussi le faire quelque chose comme ca. Ce chiffre est légèrement différente. Il est presque exactement le même que ce que nous avons vu avant, sauf qu'au lieu de dire seulement $ x là aussi le paramètre à hard_square, Je dis $ x = 10. Donc, ceci est un exemple de programmation défensive, garder vos programmes contre les utilisateurs malveillants. Ceci est une façon de faire une erreur vérifier que nous avons fait pas vraiment avoir comme une option dans C. Nous ne pourrions jamais spécifier la valeur par défaut de quelque chose. Nous avons toujours eu pour vérifier si la, par exemple, si nous avons fait un appel à GetString, il était plus propre si, immédiatement après nous vérifié que, nous avons vérifié si la chaîne que l'utilisateur nous a donné est pas égal à null, parce que nous ne voulons pas commencer travailler avec une chaîne nulle. Ici, cela est d'une manière pour se prémunir contre cela. Si l'utilisateur ne nous donne pas quelque chose en quelque sorte, ce que nous allons faire? Eh bien, nous allons simplement dire ce ils ne nous fournissent, nous allons juste à brancher 10 place. Donc, si ils ne nous donnent une valeur, il suffit d'utiliser 10 par défaut. Et alors voici, remarque que je fais Un appel à hard_square, mais il n'y a pas d'invite à l'utilisateur, non? Je fais juste un appel vide. Mais ma fonction hard_square attend un paramètre. Qu'est-ce que cela va imprimer? Il va imprimer 100, non? Comme l'utilisateur n'a pas me donner quoi que ce soit. Et donc je vais juste à assumer que 10-- 10 est la valeur par défaut. Et donc ce serait imprimer sur 100 sur sa propre ligne. Fichiers PHP ne doivent pas être juste un seul fichier. Vous pouvez combiner plusieurs fichiers ensemble, exactement comme vous pouvez en C. La façon nous l'avons fait en C était généralement de faire un #include pour obtenir des fichiers d'en-tête tirés dans. Nous ne faisons pas cela en PHP. Nous faisons quelque chose appelé require_once. Et puis il ya cet ensemble chose, ce qui est ce __dir__? Voilà juste une spéciale variable ou constante spéciale, vraiment, qui spécifie ce que votre répertoire actuel. Et donc il va chercher dans votre répertoire courant pour une cs50.php de fichier appelé dans cet exemple ici, et il va tenir ce fichier au début de votre programme de PHP, en supposant que vous mettez l'exigent une fois la ligne en haut de votre fichier PHP. Donc, PHP est principalement utilisé, mais pas exclusivement utilisé, comme un langage pour la programmation web-based. Voilà vraiment comment il est venu à être. Mais il est un plein la langue, comme nous l'avons vu. Nous avons vu à peu près toutes les choses qu'il peut le faire qui sont similaires à C, et il peut faire une sacrée beaucoup plus que cela. Mais parce qu'il est une langue pleine et nous peut faire de la programmation en ligne de commande en elle. Nous pouvons exécuter des programmes de ligne de commande. Tout ce qu'il faut pour exécuter une commande programme en ligne qui est écrit en PHP est que vous avez un interpréteur PHP. Donc, il est en quelque sorte analogue à ayant un compilateur sur votre système si vous voulez compiler votre code C pour le transformer en fichiers exécutables. Vous avez besoin d'un interpréteur PHP qui existe sur votre système de sorte que vous pouvez interpréter les fichiers PHP. En supposant que vous faites, et généralement cet interprète est appelé PHP, et il est généralement livré avec plus téléchargement ou installation de PHP que vous pouvez obtenir en ligne, et certainement le nom de l'interpréteur PHP nous avons en CS50, IDE. Tout ce que vous faites est fichier php type. Et ce que votre programme de va faire est qu'il est aller à courir à travers l'interprète, il est aller à ignorer tout ce qui est pas entre la question mark-- ou, équerre d'interrogation php, les séparateurs de PHP, et l'imprimer, et il va interpréter et d'exécuter le code à l'intérieur de vos séparateurs de PHP. Donc, nous allons POP sur la CS50 et IDE jeter un oeil à un couple de fichiers PHP, l'exécution d'un couple de fichiers PHP, dans interface de ligne de commande du CS50 IDE. Donc, nous sommes ici dans CS50 IDE, et je l'ai pris la liberté l'ouverture d'un fichier appelé hello1.php. Et apparemment, le contenu de ce fichier ne sont que les séparateurs de PHP là, et entre les deux, echo ("Bonjour, monde»). Ceci est un programme PHP assez simple. Je vais juste faire défiler à ma fenêtre de terminal ici, et je vais taper php hello1.php, appuyez sur Entrée. Bonjour le monde. Voilà sans doute ce que nous étions attendant qu'il fasse, non? Montons et prendre Un autre regard sur un programme. hello2.php. A peu près la même chose, pas beaucoup de choses ici. Cette fois, cependant, je vais inviter l'utilisateur de me donner leurs noms. Je suis en utilisant à nouveau cette fonction readline. $ nom = readline. Voilà l'invite, "Quel est votre nom?" Apparemment, je suis impression sur sa propre ligne. Et puis, si la ligne ci-dessous ce sera l'invite où l'utilisateur peut entrer son nom. Et puis je suis en utilisant un peu de interpellation variables ici sur la ligne 3 imprimer "Bonjour" et quels que soient les types d'utilisateurs. Donc, cela est analogue à dire, Bonjour, virgule,% s si nous utilisions printf en C. Allons donc et interpréter ce programme. Encore une fois, je vais faire défiler vers le bas à ma fenêtre de terminal. php hello2.php. Quel est votre nom? Doug. Bonjour, Doug. Je dois aussi une autre fichier appelé hello3.php. Je vais me vider écran avec commande L, et je vais exécuter cette. Quel est votre nom? Doug. Bonjour, Doug. Donc, le comportement est identique à hello2.php, mais pourquoi est-il hello3.php? Eh bien, voici la différence. Dans ce cas, un avis que sur la ligne 1 ici, Je dois quelque chose qui est pas entre les séparateurs de PHP. Je suis juste l'impression ou je out-- venez de taper, "Quel est votre nom?" Lorsque l'interpréteur PHP voit cela, il a aucune idée de comment l'interpréter comme PHP, et donc au lieu d'échouer, il va juste cracher. Donc remarquer sur la ligne 3 maintenant, mon appel à readline, il n'y a pas plus rapide. Je suis juste se passe réellement lorsque to-- l'interpréteur PHP voit cela, il va imprimer "Quel est votre nom?" Puis il voit, oh, OK, here's-- tout le reste va être interprété comme PHP, Voilà pourquoi cela fonctionne. Je ne dois pas inciter nécessairement l'utilisateur to-- intérieur de readline, Je peux juste avoir à l'extérieur des séparateurs de PHP et permettre à l'interprète juste imprimer pour moi. Donc, vous ne pas réellement suffit d'avoir un ensemble de séparateurs de PHP dans votre programme. Vous pouvez en fait avoir plusieurs d'entre eux, leur ouverture et leur fermeture si nécessaire. Donc, nous allons jeter un coup d'oeil à un couple de programmes dans CS50 IDE où nous illustrer cette idée d'avoir plusieurs ensembles de PHP délimité. OK, donc je l'ai ouvert un fichier appelé ici add1.php. Et remarquez ce qui se passe ici. Tout comme avant, je dois une PHP simple ensemble de séparateurs. Je vais imprimer le message, "S'il vous plaît me donner un numéro." Ensuite, je vais vous lire une ligne et le stocker dans le $ num1 variable. Ensuite, je vais d'imprimer de nouveau. Donnez-moi un second numéro. Lire une ligne de l'utilisateur, magasin quel que soit ils ont tapé dans num2 en $. Ajoutez-les ensemble et stocker que résultat dans une variable appelée $ somme, et ensuite imprimer, "Le somme de ces deux nombres est, "et ensuite interpeller il l'$ somme variable. Alors disons simplement exécuter cette par l'interpréteur pour confirmer que ce que nous attendons. php add1.php. S'il vous plaît me donner un numéro, 3. S'il vous plaît me donner un second numéro, 4. La somme de ces deux nombres est 7. Voilà 3 plus 4. D'accord? Donc rien de terriblement envie là. Et maintenant, nous allons ouvrir jusqu'à add2.php. Ici, je dois un couple de PHP délimité ensembles là, non? Lignes 1, 3-- lignes 1 et 3 n'a pas de séparateurs de PHP. Alors, quand l'interprète les voit, il est juste va cracher exactement ce que j'y ai tapé. Voilà donc où je suis faire tout mon incitant. Sur les lignes 2 et 4, nous voyons la très $ familier? php de tri des séparateurs, de sorte que ces deux lignes sont va exécuter comme PHP. Et puis sur la ligne 5, je dois cette chose étrange ici, non? Cette équerre Aide à la recherche de signe égal. Je vais même faire un zoom un peu plus loin. Vous pouvez voir ce que je suis parle là, cette $? =. Il se trouve qu'il est si commun que la raison pour laquelle nous ouvrons un ensemble de PHP séparateurs est d'imprimer une valeur. Et voilà tout ce que nous allons faire. Mais il ya même un raccourci pour cela. $? = Est un raccourci pour dire PHP quelque chose comme $? php echo la somme de num1 et num2. Donc, ceci est juste un autre sténographie pour cela. Donc, si je lance ce programme, php add2.php. Je vais dévaler un peu. S'il vous plaît me donner un numéro, 4. S'il vous plaît me donner un second numéro. Et puisque je ne me soucie pas vraiment de les types de données en PHP, je peux dire 4.8. La somme de ces deux nombres est de 8,8. Cette fonction se comporte assez bien exactement le même que nous pourrions nous attendre, aussi bien. Et je dois encore un ouvert ici appelé dice.php. Essayez ce nouveau. Je ai une autre appelée ici dice1.php, qui a également, voir, a cette équerre question marquer notation signe égal là, mais remarque que dans ce cas je suis appelant la fonction rand, qui, comme vous pourrait attendre génère un nombre aléatoire. "Vous roula une," et ça va calculer un nombre aléatoire, mod 6 + 1. Donc, ça va me donner le numéro dans la plage de 1 à 6. Rappelez-vous que mod 6 me donnerait un nombre dans la gamme de 0 à 5, mais si je suis simulant jets de dés, qui est ce que je fais ici, Je ne veux pas de ces dés pour passer de 0 à 5, je veux dés qui vont de 1 à 6. Et donc cela est un moyen d'obtenir me dans la plage de 1 à 6. Je fais deux fois cette. Donc, apparemment, je roulais deux dés à ce programme. Donc, je vais effacer mon écran, et je ferai php dice1.php. Vous roula une 4 et 2. Et si je lance le programme encore une fois, vous avez roulé un 5 et un 5. Donc, chaque fois que je lance le programme, Je reçois des numéros différents, parce que chaque fois que je fais donc, ça commence plus. Il va générer une nouvelle ensemble de nombres aléatoires pour moi. Donc, si nous sommes habitués à exécuter des programmes de C, nous sommes habitués à taper ./ le nom d'un programme, non? Voilà comment nous avons fait tout de nos programmes en C jusqu'ici. Nous pouvons le faire en PHP ainsi en ajoutant quelque chose appelé un shebang au début de notre fichier PHP. Je sais qu'il est une sorte de mot idiot. Il est court pour hachage bang. Voilà les deux premiers caractères là. Rappelez-vous que nous appelons point d'exclamation souvent un bang en informatique. Il pourrait aussi être pour claquement sec. Il ya deux manières de l'interpréter. Mais il est fondamentalement une sorte spéciale de commandement que l'interpréteur PHP comprend que, oh, je veux d'exécuter ce programme, qui est apparemment / user / bin / php, qui est en fait où l'interpréteur PHP vit spécifiquement sur notre système. Donc ce qui se passe ici it's-- est l'interprète comprend, oh, Je apparemment censé utiliser dans ce programme à exécuter ce fichier. Et il vous permet pour sauter l'étape d'avoir à dire php something.php. Il ya une autre capture ici, qui est que si nous voulons que nos programmes à fonctionner comme prévu, nous besoin de faire quelque chose appelé un changement d'autorisation de fichier. Et nous allons go-- et nous parlons un peu bit plus de modifications d'autorisations à propos de fichier dans notre vidéo sur MVC, mais il suffit de dire que cela est ce que vous devez faire afin de rendre votre fichiers .php exécutable. Donc, nous allons jeter un oeil à ce que notre dernier exemple plus dans CS50 IDE. Donc, ici, en IDE je dois deux fichiers dans ce Répertoire PHP qui semble ne pas être appelé .php. Je dois une fonction appelée add-- Je avoir un fichier appelé add3 et un fichier appelé dice2. Donc, nous allons jeter un rapide regarder et ouvrir add3. Et comme vous pouvez le voir, au début de mon dossier, je dois ce tralala, non? Ce point hachage point d'exclamation. Maintenant, vous aurez peut-être aussi remarquerez que pour une raison quelconque, Je ne ai pas toute syntaxe soulignant plus, et voici ce que je faisais allusion tout à l'heure, qui était que si je ne nomme pas mon dossier .php, je ne bénéficient pas de la coloration syntaxique plus. Ce fichier est simplement appelé add3. Alors que je peux courir plus tard avec ./ add3 et non ./ add3.php. Ainsi, le reason-- il est toujours bien, il est encore PHP valide, mais il ne la coloration syntaxique, parce ce fichier est pas appelé something.php. Voilà la seule vraie différence ici, plus le tralala. Voyons donc ce qui arrive quand Je tente de lancer ce programme. ./ Add3, tout comme je le ferais avec C. Bash. ./ Autorisation add3 refusée. Ceci est ce que vous allez pour voir si vous oubliez d'utiliser la commande chmod pour modifier les autorisations du fichier. Comme il se trouve, PHP régulière fichiers ne peuvent pas être simplement exécutés. Ils peuvent être interprétés, mais nous sommes faire quelque chose d'un peu différent ici. Nous l'exécuter. Et donc je dois ajouter l'autorisation d'exécution, chmod a + x pour add3. Ensuite, je peux dire ./ add3. S'il vous plaît me donner un numéro. 5, 6. La somme de ces deux nombres est 11. De même, je l'ai déjà chmodé dice2, donc je ne peux simplement taper ./ dice2, vous avez roulé un 1 et un 1, vous un laminé 5 et un 4, et ainsi de suite. Voilà donc à peu près la idée d'une syntaxe PHP, non? Il ya beaucoup à passer, je sais. Mais nous espérons que vous avez vu maintenant que PHP est pas vraiment différent de C et nous donne vraiment la possibilité de prendre les choses d'un cran ou deux. Nous ne devons pas vraiment à se soucier trop about-- nous faisons pas vraiment avoir à trop se soucier les détails de bas niveau nous eu de soucis avec C, non? Nous pouvons nous concentrer sur le plus élevé stuff niveau que PHP nous permet de faire et de prendre pour accordé que cela va fonctionner pour nous. Donc, il nous donne la capacité maintenant, transition de C à PHP, pour faire des programmes qui sont beaucoup plus complexe et peut-être beaucoup plus robuste. Donc, je vous souhaite de travail amusant avec PHP, et je suis Doug Lloyd. Ceci est CS50.