Transcription
1. Qu'est-: Hé, John Morse. Ici. John Morse dot com en ligne. Cette leçon. Nous allons vous donner un peu d'introduction à la programmation orientée objet. Parlez de ce qu'est la programmation orientée objet, pourquoi vous voudrez peut-être l'utiliser et vraiment, j'espère juste vous donner une base de concepts et de connaissances et de compréhension sur lesquels nous
pouvons ensuite construire au fur et à mesure que nous entrons ensuite dans le code. Donc ça dit, voici exactement de quoi on va parler. Nous allons,
ah,
définir la programmation orientée objet. Nous allons parler de certains des mots clés réservés méthode de propriété de classe, puis aussi parler de la différence entre les classes et les objets. Je vais te donner une analogie. J' espère qu'il est un peu plus instructif que ceux que j'ai traités quand j'apprenais tout ça. Espérons que nous aidons à le rendre un peu plus clair, et ensuite nous parlerons de pourquoi vous voudriez utiliser la programmation orientée objet et pourquoi elle est devenue une sorte de chose si importante et généralement recommandée dans la plupart des situations. Bon, donc c'est un ordre du jour D. Plongons dans ça alors. Parlons de la définition, donc je vais en quelque sorte passer par ça et signaler des choses que je pense importantes. La programmation orientée objet est donc un modèle de langage de programmation. Maintenant, je veux me concentrer sur ce mot modèle. Vous pouvez aussi utiliser le mot que je pense, style ou approche ou paradigme, quel que soit le mot qui fonctionne là pour vous. Mais la chose à comprendre à propos de l'objet pendant la programmation est que ce n'est pas comme un ensemble
différent de technologie ou un langage différent ou quelque chose comme ça. C' est juste une approche, un style ou un modèle différent de la façon dont vous procédez à la programmation. Et c'est organisé, comme le dit la définition ici autour des objets plutôt que des actions et autour des données plutôt que logique si bien, nous allons continuer ici. Historiquement, un programme a été considéré comme une procédure logique qui prend les entrées, les données, les
traite, les traite et les produit. Donc, un bon exemple de ceci est si vous deviez prendre, disons, juste
un type régulier de formulaire PHP, qui, , dans beaucoup de cas, est le bloc de construction de n'importe quelle application si vous y pensez vraiment. Mais prenez simplement un type régulier de formulaire HTML que vous soumettrez via PHP et stockez dans une base de données ma suite. Généralement, la façon dont cela a été fait ou la façon dont les gens y pensent est que vous
commencerez par une sorte d'interface utilisateur, qui est la forme que vous prendrez les données qui sont là et votre langage de script réel de votre langage de programmation. PHP penserait à ce sujet en termes de ce que j'ai besoin de faire pour le traiter. Il y aurait lieu de penser qu'il s'agit davantage d'une action et de la logique nécessaire pour réaliser cette action. Donc, il est très autonome dans un sens qu'il ne concerne que cette forme ce qui doit être fait pour le traiter et finalement stocker cela dans la base de données. Et puis, bien
sûr, si vous voulez récupérer ces données, alors vous avez tout un ensemble d'actes, une autre action et la logique nécessaire pour effectuer cette action. Donc, le code procédural est généralement centré sur cette idée d'actions soumettant ce formulaire, stockant ces données ici , récupérant ces données , les
affichant ici, etc., et c'est ainsi que les choses avaient été fait pendant une longue période. Le problème avec cela est que lorsque vous commencez à construire des applications plus avancées, si vous ne vous concentrez que sur des actions et que vous n'êtes pas vraiment concerné par le reste de l'application. Lorsque vous construisez une autre partie de celui-ci, vous commencez à utiliser beaucoup de code. Vous commencez à avoir des choses qui peuvent entrer en conflit les unes avec les autres, et vous finissez avec ce genre vraiment grand de Ah potentiellement désorganisé, juste un genre de bibliothèque de code qui n'a pas nécessairement une sorte d'organisation à elle. Et quand vous commencerez à l'organiser, ce que vous vous retrouverez à faire, c'est d'organiser d'une manière qui suit, avec les principes Cooper ou les principes orientés objet. Et donc vraiment la programmation orientée objet prend cette idée de Hey, comment pourrais-je organiser cela un peu mieux et vraiment juste une sorte de l'extrapoler et PHP le supporte maintenant avec certaines des fonctionnalités qui sont sorties avec et ainsi de suite orteil où vous pouvez le faire ? Alors que la définition se poursuit, le défi de la programmation a été vu comme comment écrire la logique, pas comment définir les données. programmation orientée objet prend l'avis que nous nous soucions vraiment de ce qui nous intéresse vraiment, des objets que nous voulons manipuler plutôt que de la logique nécessaire pour les manipuler. Et c'est un point très important, car quand vous pensez à une application, vous commencez à la décomposer. En fin de compte, ce qui vous intéresse, ce sont les objets. Donc, par
exemple, si vous travaillez avec la CIA, CMS, vous ne vous souciez pas nécessairement exactement de la logique nécessaire pour qu'un utilisateur crée un droit de
publication, mais vous devez faire cela est quelque peu trivial au fait que ce qui compte pour le programme c'est que l'utilisateur un objet peut créer. C' est essentiellement une méthode ou une action. Un autre objet le post. Ok, donc vous avez deux objets, l'utilisateur dans le post et vous avez une action qui est de créer ou modifier ou supprimer ou catégoriser etcetera. Et donc quand vous commencez à le regarder de cette façon,
ce que vous réalisez est qu'une application est vraiment juste une collection d'objets et d'actions , ses utilisateurs créent des utilisateurs de publication, supprimant des utilisateurs de publication, catégorisation des utilisateurs de poste, création de catégories, utilisateurs création de balises, etcetera, etcetera, etcetera, etcetera. Donc, quand vous commencez à y penser de cette façon, vous y pensez réellement de la façon dont l'application elle-même fonctionne et, en compte, fin de
compte,
la façon dont l'utilisateur final va s'y connecter correctement ? Ensuite, l'utilisateur ne se soucie pas de la façon dont le message est créé dans le back-end. Tout ce qu'ils se soucient c'est que le Post soit créé. Et donc il nous permet de l'écrire d'une manière qui fait plus est plus en ligne avec la façon dont le programme fonctionne réellement et par conséquent, aussi être beaucoup plus organisé, ne pas répéter, un tas de code et toutes sortes de différents avantages dans lesquels nous allons entrer, est-ce
pas ? Donc j'espère que cela vous donne une compréhension un peu plus claire de vous savez, quelle programmation orientée objet est dans une partie de la raison pour laquelle, au départ, nous voudrions l'utiliser. Donc, maintenant, parlons de quelques bases de la programmation orientée objet, et je suis en quelque sorte confiné cela principalement à PHP juste parce que c'est ce que ce cours est. Donc, euh, la première chose est ce qu'on appellerait la classe. Maintenant, beaucoup de gens pensent que les classes, en fait la chose que vous créez et comme le codeur qui est vraiment que c'est la partie que vous écrivez réellement. Mais ce n'est pas la chose en soi qui ne parlera pas de ça. Ce que ça veut dire ici en une seconde. Mais la façon de penser aux classes est en fait le schéma directeur pour la création du projet. Donc, lorsque vous écrivez une classe, vous ne créez pas d'objet. Vous créez le Blueprint brut pour un objet à créer ultérieurement. Ok, alors rappelez-vous juste que la classe est vraiment le plan. Et à l'intérieur d'un cours, tu auras les deux choses principales. Vous allez avoir nos propriétés et nos méthodes. Les propriétés sont donc une variable qui appartient à un objet. Ce que cela signifie vraiment généralement, c'est que c'est quelque chose qui décrit l'objet. Ainsi, par
exemple, si vous prenez un poste, ce serait le titre de la Poste. Ce sont les données sur le projet particulier là-bas. L' objet particulier, une méthode est des actions que l'objet peut prendre ou qui peuvent être prises sur l'objet. Ainsi, par
exemple, vous avez un utilisateur alors qu'un utilisateur peut créer une publication. C' est donc l'utilisateur qui prend une action lors de la création d'une publication. Mais c'est aussi le post en tant qu'objet lui-même créé, donc c'est un objet qui prend une action. C' est aussi un autre objet option ayant une action sur elle. Ok,
donc, mais la chose à garder à l'esprit, c'est que les propriétés ressemblent plus à des caractéristiques. Leurs données qui décrivent les méthodes d'objet sont des choses liées à l'action qui peuvent faire ou peuvent être faites correctement. L' objet, alors, est la chose réelle. Nous reviendrons à cela dans une seconde et puis dans Stan Shih ation ou deux dans Stan elle a mangé est l'action de créer un objet à partir d'une classe. Encore une fois, la classe est le plan. L' objet est la chose réelle que vous créez à partir de la classe. Ok, alors maintenant nous allons entrer dans quelques analogies parce que je sais que quand vous êtes ici, ça peut probablement être un peu déroutant. Mais allons-y et regardons une analogie. Donc, la première analogie est l'analogie de la maison. Et donc la façon de penser à cela est la maison elle-même. Lorsque les maisons ont toutes construit la chose rial qui existe qui a été construit avec du bois et des bardeaux et citant tout cela, l'action pour vous d'être juste dans le monde réel, oublier le revêtement pendant une seconde. Si vous êtes juste dans le monde réel, regardant la maison. Cette maison est l'objet lui-même. Ok, alors quand on fait un objet pendant la programmation Quoi ? Nous sommes en train de créer nos trucs de rial. L' objet réel. Ok, maintenant, les plans de la maison sont la classe. Donc, quand vous écrivez le cours, vous n'écrivez que des plans. Ok, maintenant, à l'intérieur de ces plans, vous le feriez et c'est là que ça peut devenir un peu délicat, mais c'est une couche abstraite. Donc vous parliez de choses dans les plans, comme la couleur, peut-être façonner le nombre de fenêtres, toutes ces sortes de choses. Toutes les propriétés, les caractéristiques de l'
air de la maison qui en font unique des autres maisons là-bas . Mais vous ne diriez pas nécessairement quelle couleur, quelle forme ou quel nombre de fenêtres, moins quand on y pense. En termes de programmation orientée objet, tout ce que vous dites, c'est qu'il peut avoir une couleur. Il peut être n'importe quelle couleur, mais il peut avoir une couleur ou une forme ou un certain nombre de fenêtres à nouveau. Vous n'êtes pas sourd définissant nécessairement comment ces détails spécifiques sont réellement. Les méthodes, alors, sont les actions que la maison peut prendre ou peut être prise sur la maison. Donc construire la maison, chauffer la maison, vendre la maison, prendre un marteau sur le côté de la maison, quelle que soit la sorte d'action liée à cet objet particulier ou aux méthodes, puis la construction réelle en est l'exemple. Donc, dans Stan Shih ating ah, classe et la création d'un objet est la construction réelle de l'objet à partir des plans. Donc, vous construisez la maison à partir des plans que vous avez créés dans la classe et dans la classe. Vous avez différentes propriétés et méthodes que cette maison peut avoir. Et c'est dans Stan Shih ation où vous voulez dire, ou vous désigneriez quelle est la couleur,
quelle est la forme,
quel est le nombre de fenêtres. Non, c'est un peu qui est un peu fudged, parce que vous n'avez pas à toujours déclarer toutes ces choses et dire une méthode constructeur. Lorsque vous créez la classe, vous pouvez définir ces propriétés explicitement à l'avance. Vous pouvez le faire, mais comprenez donc. Vous pouvez en avoir ceux qui sont définis explicitement à l'avance, ou vous pouvez en avoir ceux que vous définissez quand vous et Stan elle l'avez mangé, mais les couleurs un très bon exemple, juste si vous aviez un ensemble de plans pour créer une maison, ces plans ne vous indiqueraient pas nécessairement de quelle couleur l'observation sur la maison va être. Ils diraient juste qu'il va y avoir des citations. Et tu irais chez le propriétaire. Tu dirais, Hey, quelle couleur tu veux ou quel genre de comptoirs tu ne veux pas accorder ? Tu veux des tribunaux ou tu veux autre chose, non ? Le propriétaire serait capable de ramasser tous ces trucs, et ça n'affecterait pas vraiment votre construction. Donc vous n'avez pas à définir ces choses spécifiquement, euh, dans les plans. Mais ce que vous définissez, c'est qu'il y a des citations, et qu'il va y avoir une sorte de plateaux de table. Donc, quand vous le construisez réellement,
c' est quand vous détermineriez ces choses est la même idée ici, il y a certaines propriétés que vous n'avez pas à définir, Vous savez, la couleur de la maison que vous pouvez dans la classe réelle. Tu peux définir ça quand toi et Stan elle l'a mangé. Ok, donc, encore une fois, la maison est l'objet. Les Blueprints sont la classe que vous en position huit cette classe pour créer l'objet et Bien sûr, cet objet aura certaines propriétés et méthodes qui lui sont associées. Regardons l'analogie de la voiture. Donc encore une fois, si nous parlons d'une voiture, la voiture elle-même est l'objet est la volonté réelle re une chose du monde. Le modèle trois d de la voiture qui pourrait être dans un ordinateur qui est construit à partir de ce serait la classe contre le plan ou le modèle. Vous savez, la couleur de la voiture pas nécessairement la couleur spécifique, mais qu'il a une couleur. La taille du moteur, les roues à l'exception de celles-ci sont toutes des propriétés. Leurs données sur les méthodes de la voiture sont des choses que la voiture peut faire ou peut être fait à la voiture. Alors démarrez la
voiture, conduisez la voiture, tournez la voiture et la fabrication réelle ou la construction de la voiture est une position. Voir ation. Ok, donc encore une fois, je veux juste essayer de faire la différence est claire. L' objet est la chose réelle qui est créée. La classe est les Blueprints pour la créer, et la façon dont vous la créez est par instance ating. Une instance de cet objet de la classe du Blueprint c'est ce qu'est l'instance Asiatique et encore avec la bonne chose à propos de l'objet. La programmation Dorian est parce que vous ne dites pas spécifiquement quelle couleur quelque chose doit être . Par exemple, vous pouvez créer une voiture bleue, une voiture rouge ou une voiture verte, ou vous pouvez, dans un cas, lorsque vous le souhaitez, manger la classe. Vous pourriez dire que cette instance particulière des classes va être de cet objet ou quoi que ce soit sera bleu. Tiens, ça va être vert. Ici, il va être lu, etcetera, etcetera, donc vous pourriez avoir plusieurs instances de la même classe qui ont des propriétés différentes associées à. Hum, en fait, si vous rejetez un oeil à un CMS tous les messages individuels que vous avez sur un blawg, par
exemple, sont des objets différents, ces airs, différentes instances de la classe. La classe ne vous indique pas quel est le titre du billet ou quel contenu doit être. Il vous dit juste qu'il y a un titre, qu'il y a une description. Il y a du contenu. Il y a une catégorie de balise, etcetera, donc chaque ligne dans votre base de données de votre post for est vraiment et différente instance de cette classe
particulière. Ou il s'agit d'un objet différent que vous avez stocké dans votre base de données. Ok, donc encore une fois, je sais que certains d'entre vous ont du sens. Certains d'entre vous qui seraient comme, OK, vous savez, je suis encore un peu confus. Ou peut-être que je suis plus confus maintenant. Le truc à propos de ça, c'est que ce truc est dans ton cerveau maintenant. Donc, quand nous entrons dans le code réel et commençons à l'utiliser, certaines de ces choses espérons que nous allons commencer à cliquer pour vous un peu plus. Si ce n'est pas le cas, revenez regarder ça et rebondir un peu entre les deux si vous avez besoin. Ah, pour vraiment clarifier ça pour vous parce que vraiment, nous essayons juste de jeter une base ici. Ce n'est pas nécessairement nécessaire, ou même nécessairement vrai que vous allez tout comprendre ici. Vous devez vraiment commencer à travailler avec pour que cela se produise. Bon, alors parlons de quelques-unes des raisons pour lesquelles vous voudriez utiliser la
programmation orientée objet . Nous allons probablement le plus grand, le
plus important ou celui dont on parle beaucoup est ce qu'on appelle l'encapsulation. Et ce que cela signifie, c'est vos données groupées avec les méthodes qui fonctionnent sur ces données. Donc, nous regardons littéralement juste couvert exactement ce que c'est. Les propriétés de l'air, vraiment, les données et les méthodes sont les méthodes qui fonctionnent sur ces données. Donc, ce qui se passe, c'est que vous mettez ces deux choses ensemble dans une seule classe, et ce qui vous permet de faire est de construire des classes individuelles qui font des
choses spécifiques très individuelles afin que vous puissiez créer, disons, un post classe. Et cette classe aura toutes les données nécessaires pour construire un objet et stocker toutes les données nécessaires pour cela dans la base de données. Il aura toutes ces propriétés définies, ainsi que les méthodes qui vont vous permettre d'interagir avec ce post de n'importe quelle
manière l'air nécessaire pour le créer, ajoutez-le pour supprimer etcetera. Alors ce sera une classe. Alors tu en auras peut-être un autre. C' est une catégorie qui a toutes les données et les méthodes. Pour cela, j'en ai un autre qui est étiqueté pour toutes les méthodes et les données. Pour ça, vous pourriez en avoir un autre. Cet utilisateur pour toutes les méthodes et données pour cela. Donc, vous pensez à l'application en termes d'objets réels et de choses qui sont à l'intérieur des messages d'application, catégories ,
balises ,
etc., et vous les organisez par ces les choses et les garder très encapsulés pour que Ah, vous ne l'êtes pas. Vous ne mélangez pas et n'égalisez pas le manteau partout. Et cela amène les âges à être beaucoup plus organisés et plus faciles à travailler, de sorte qu'il est plus facile à mettre à l'échelle. Ah, genre de principe sec, qui est noté ici sous le puits inhérent de SA. Mais il arrive aussi ici, vous ne allez pas nécessairement réutiliser un tas de code et ainsi suite. Donc, l'encapsulation est la grande chose conduit à juste un type
plus propre, plus organisé, plus efficace et plus efficace et
plus évolutif. Application. héritage est un autre, donc l'héritage est essentiellement, c'est le C'est un processus qui permet aux objets d'acquérir les propriétés des objets d'une autre classe, donc essentiellement vous pouvez étendre sur l'objet, et lorsque vous étendez, vous pouvez étendre une classe. Quand vous étendez cette classe. Fondamentalement, la nouvelle classe que vous créez inhérente à toutes les propriétés de la classe qu'elle étend et peut avoir accès à ces méthodes et ainsi de suite. Et donc cela vous empêche d'avoir à le faire si vous voulez ajouter ou travailler avec ou si vous
voulez utiliser une classe particulière, mais vous voulez y ajouter des choses, vous n'avez pas à le réécrire complètement. Vous pouvez simplement l'étendre, puis y ajouter ce que vous voulez y ajouter. Cela vous empêche d'avoir à réécrire un tas de code, ne vous répétez pas et cela améliore la convivialité et tout ce genre de choses. Donc l'héritage est une autre raison pour laquelle la dernière est ce qu'on appelle le polymorphisme. Ainsi, différentes instances peuvent prendre des formes différentes. C' est fondamentalement ce dont nous avons déjà parlé, qui est un cas,
vous savez, vous savez, la voiture peut être lu un autre bleu complet, autre peut être verte et rien ne change au sujet de la classe. Vous ne changez pas de classe du tout. Tout ce que vous faites est de modifier les informations ou les données que vous transmettez à la classe lorsque
vous êtes assis, ou lorsque vous travaillez avec les méthodes ou en fonction de certaines conditions et ainsi de suite, vous pouvez modifier l'objet que vous obtenez à partir de la sans avoir à modifier le Blueprint lui-même. Donc, encore une fois, cela crée une flexibilité de niveau pour votre application. Il le fait aussi à nouveau. Donc vous ne répétez pas votre code. Donc, vous êtes à nouveau plus réutilisable, plus évolutif, toutes ces sortes de choses. Et c'est pourquoi vous voyez la programmation orientée objet devenir ce sujet vraiment chaud vraiment fortement recommandé et dans la plupart des cas, c'est quelque chose que vous voudriez utiliser. Maintenant, il y a quelques cas, et c'est probablement une controverse, je pourrais dire que c'est très controversé. Mais je dirais qu'il y a certains cas où le programme orienté objet n'est pas nécessairement la meilleure façon de faire les choses correctement. Donc, le bon exemple que j'aime utiliser ses thèmes WordPress maintenant parties de thèmes WordPress absolument devrait être des classes. Il y a des choses individuelles que vous voudriez faire dans un thème. Par exemple, nation de
pagination peut être dans un bon exemple où il y a un certain nombre de choses que vous deviez faire pour paginer en huit correctement, et toutes ces choses sont liées les unes aux autres afin que vous puissiez regrouper toutes ces choses ensemble, et vous pouvez utiliser cette classe pour gérer essentiellement cette partie des choses correctement. Donc, vous auriez encore des classes à l'intérieur de votre thème WordPress. Mais le réel lorsque vous avez créé le thème WordPress, vous créez un fichier de fonctions, non ? L' acte que la fonction réelle fonctionnera fichier où ce qui est essentiellement en quelque sorte devient votre contrôleur. Si vous pensez à cela en termes de ah M V C centre commercial de vous pouvez configurer le type de contrôleur que les fonctions pensé sorte de devient votre contrôleur un peu. Il est discutable de savoir si la construction d'une classe dans le contrôleur réel et l'utiliser là. Je pense qu'il est discutable si cela vous aide réellement ou simplement crée des
frais généraux inutiles . Et donc encore, il y en a. Ou peut-être que vous êtes en train de construire, vous savez, un simple vous littéralement ou de construire un formulaire sur votre site, n'est-ce pas ? Et ça ne va pas devenir Ce n'est pas cette énorme application que vous allez construire. Ou si c'était le cas, alors vous comprendriez. Ok, Maintenant je devrais probablement basculer et commencer ah, en utilisant ah, en prenant l'approche orientée objet et ce genre de choses. Mais c'est littéralement une forme que vous allez bien traiter, est-ce vraiment nécessaire de construire une classe entière pour tout ça ? Vous pouvez certainement et si vous êtes comme un bâton pour ce genre de chose, alors par tous les moyens. Mais ce n'est pas vraiment nécessaire, nécessairement un avantage à le faire de cette façon. Ok, donc il y a des cas où la programmation orientée objet n'est pas nécessairement une sorte d' avantage et peut même ajouter quelques frais généraux nécessaires. Mais si vous construisez une application, si vous êtes assis, je vais construire un CMS. Je vais construire un réseau social. Je vais construire ah e commerce une application quelconque où tu auras un certain nombre de pièces mobiles
différentes. Vous allez avoir un certain nombre d'objets différents et qui interagissent les uns avec les autres et ainsi de suite. Le programme orienté objet est absolument la voie à suivre. Ça va te rendre la vie beaucoup plus facile. Ah, ça va rendre les choses plus organisées, plus évolutives, plus réutilisables, tout ce genre de choses. Donc, vous devriez absolument l'utiliser dans ces cas particuliers. Bon, donc, comme je l'ai dit, non, ça va le faire pour cette leçon. Mais comme je l'ai dit, il n'est pas vraiment nécessaire que tout cela ait un sens complet à 100%. C' est maintenant dans ta tête. Tu l'as entendu. Et au fur et à mesure que nous entrons dans le code, alors vous devriez commencer à Seymour des exemples clairs des choses dont nous avons parlé, et j'espère qu'il commence à se réunir pour vous. Encore une fois, je vais le faire pour cette leçon. Merci d'avoir regardé. On parlera à la prochaine fois.
2. Class, propriété, objet, méthode: non plus. John Morse. Ici, John Morse en ligne dot com. Cette leçon. On va passer par la syntaxe de classe de base. Donc, je vais vous montrer comment créer une classe comment créer une propriété dans la classe, comment créer une méthode. Avait deux instances Ian une instance de cette classe, puis comment appeler une méthode à partir de nos objets nouvellement créés. Donc, cela va vous donner toute la gamme des concepts dont nous avons parlé et vous montrer comment les utiliser réellement ici en PHP. Donc, vous pouvez commencer à bout bout bout construire sur ce genre de cadre. Donc, c'est un cadre sur lequel nous allons et nous construire tout au long de la classe, donc créer une classe est vraiment assez simple. Vous avez juste besoin du mot-clé de classe. Donc c'est la classe. Et puis vous devez nommer votre classe. Alors faisons quelque chose comme ma classe. Maintenant, vous pouvez nommer votre classe n'importe quoi. Hum, mais le genre de norme pour la façon dont vous l'appelez est d'utiliser le cas de chameau. Donc capital M capital C. Ce n'est pas nécessaire. Il ne va pas jeter une sorte d'air ou quelque chose comme ça qui a juste tendance à être la convention entre les développeurs PHP, bien
sûr. Fais ce que tu veux, toujours. Mais, euh, si vous cherchez ce qu'est le genre de norme, c'est ce
que c'est. Donc, une fois que nous avons le mot-clé de classe que nous avons le nom de notre classe et tout ce dont nous avons besoin est d'ouvrir le support bouclé et puis un vêtement, bien
sûr, un support bouclé de fermeture. Et c'est essentiellement notre classe. Tout ce qu'on va faire en dehors de la position, manger et va arriver à l'intérieur d'ici. Donc, quand nous parlons de créer un Blueprint, c'est là que vous créez votre Blueprint à l'intérieur, et ce sera ce que ce sera une collection de propriétés et de méthodes. Donc, la façon de relier cela au code procédural est dans le code procédural. Souvent, vous pouvez créer un fichier de conflit, et dans ce fichier de conflit, vous avez Constance, puis dans tout le reste de votre code, votre fonction ou vous pouvez créer des variables globales. Vous pouvez créer des variables dans l'espace global, euh, euh,
nom, ce qui signifie en dehors d'une désignation de fonction, puis à l'intérieur des fonctions que vous pourriez mondialiser, utiliser le mot-clé global et ensuite utiliser ces qui ont été créées en dehors de la fonction à l'intérieur de la fonction. Eh bien, c'est une idée de type similaire dans le sens où les propriétés de l'air ressemblent à, Ah, il y a un peu comme Constance pour votre classe. Vous créez une propriété en haut en dehors de vos fonctions, ou elles ressemblent davantage à des variables globales. Vous créez, Ah, une variable en dehors de vos appels de fonction en haut de votre classe, puis vous pouvez utiliser ces variables à l'intérieur de vos fonctions sans avoir à
les mondialiser . Donc, d'une certaine façon, une classe est vraiment juste une sorte d'espace de nom. C' est un moyen de quelque chose que vous pouvez envelopper toutes vos fonctions dans vos propriétés à l'intérieur de, et ils ne fonctionnent vraiment qu'à l'intérieur de cet espace de nom particulier, et vous pourriez l'utiliser. Vous pouvez utiliser le même nom de variable en dehors de la classe, et les deux ne seraient pas en conflit. Maintenant, il y a des mises en garde et des exceptions à ces trucs, et nous allons passer par là. Mais juste dans un sens général, c'est un peu ce
que c'est maintenant à nouveau, nous avons parlé de la programmation orientée objet est en fait dans l'idée derrière elle, et le fait que vous pourriez écrire et mettre tous vos trucs à l'intérieur de la classe et toujours vraiment faire un objet pendant une programmation sera à nouveau. Nous allons plonger dans ça plus que nous continuons. Mais je veux vous donner cette base, ces types de concepts et de syntaxe basés. Donc, une fois que nous avons créé notre classe, maintenant nous pouvons créer nos variables et nos méthodes. Donc, créer une variable est assez simple. Tu le fais juste. Vous utilisez le ah, utilisez ça. Identifiez-la ici. Maintenant, nous allons parler dans un peu. Ceux-ci étaient publics, privés, protégés. Nous allons parler de la et comment cela affecte la portée et l'utilisation, et ainsi de suite. Mais ah, pour l'instant, nous allons juste rester avec le public, et ensuite vous utilisez juste cette syntaxe de r égale que j'aime. C' est juste comme créer une variable, dans un sens, donc c'est assez simple et que c'est une propriété de classe. Donc encore une fois, rien de trop fou
à ce sujet maintenant, pour créer une méthode à nouveau, nous utilisons le mot clé publique ici, puis vous créez votre fonction. Et puis, bien
sûr, vous allez faire votre nom de fonction alors nous allons juste faire ma fonction et nous allons faire nos crochets
bouclés d'ouverture . Donc, encore une fois, c'est juste comme une désignation de fonction régulière que vous auriez raison. Nous ajoutons simplement ce mot-clé public au début de celui-ci. Et ne t'inquiète pas trop,
parce que c'est que je vais t'expliquer ce que ça veut dire. Mais ce n'est pas si compliqué ou si important. Ok, il y a juste une différence dans les domaines où vous pourriez utiliser l'un ou l'autre, mais ce n'est pas quelque chose qui est trop complexe et qui serait difficile à comprendre. Tellement génial le nom de notre fonction. Et puis à l'intérieur de cela, nous allons faire quelque chose alors ici fera juste echo et utilisera le mot-clé ce et ensuite nous allons, euh, echo var. Ok, alors laisse-moi t'expliquer ça. Chaque fois que vous êtes dans votre classe comme ceci, vous pouvez utiliser ce mot-clé ici. Ou vous devez utiliser cette variable que lorsque vous créez une classe, cela devient essentiellement disponible et vous pouvez l'utiliser pour appeler soit des propriétés dans votre classe ou des fonctions afin que nous puissions le faire n'aurait pas de sens à l'intérieur d'ici, Mais nous pourrions faire ma fonction comme ça pour appeler notre fonction. Ok, donc la façon dont vous référencez les propriétés et les méthodes dans une classe utilise
cette variable en utilisant cette variable, puis ah, ce pointeur et puis le nom de la variable ou la propriété ou la fonction ou la méthode donc et juste au cas où n'est pas clair. À l'intérieur d'une classe, les variables ou les propriétés froides et, euh, les fonctions étaient appelées méthodes. Donc si j'échange ces deux-là, pardonne-moi un peu. Mais c'est l'idée de base. Donc encore une fois, vous pouvez référencer ceux qui utilisent ce ah, variable ici. Et donc c'est et c'est ce que nous faisons ici pour faire référence, sont variables apparaissent maintenant. La seule mise en garde à ceci est que nous allons parler de la classe Constance et ainsi de suite et des
fonctions statiques et ainsi de suite ici dans un peu et quelques leçons à venir. Mais cela ne fonctionne que lorsque cela obtient une instance, assise comme une instance d'un objet. Maintenant, dans la plupart des cas, ça ne va pas avoir d'importance, parce que c'est ce que tu vas faire de toute façon. Mais si vous créez une fonction statique, vous ne pouvez pas utiliser le ceci à l'intérieur de celui-ci car aucun objet n'était assis lorsque vous utilisez une fonction
statique ah à nouveau, nous allons entrer dans cela plus dans un peu. Mais ça va juste commencer. Tu y penses un peu maintenant. Encore une fois, on est démolis. Alors, ce que cette fonction devrait réellement faire ? Si nous appelons cette fonction, elle devrait faire écho. J' aime Coop. C' est finalement ce que cela devrait faire. Donc maintenant, deux instances mangent une nouvelle instance de ceci. Ce qu'on va faire, c'est qu'on va faire ma classe. Donc c'est en position, manger une instance de notre classe. Souviens-toi
des classes, du plan. C' est la vraie chose que nous créons. C' est l'objet. Donc ma classe, cette variable est un objet. C' est vous savez, si c'est le plan de la maison, c'est la maison. Donc maintenant, nous avons notre maison à l'intérieur de notre variable ma classe, et nous pouvons appeler, affaiblir, référencer n'importe quelle des propriétés, n'importe quelle méthode, et construire tout ce qui est disponible à l'intérieur de notre plan. Notre classe. Nous pouvons construire cela en utilisant ce nouvel objet. Ok, donc maintenant ce qu'on peut faire, c'est faire de l'écho. , En fait, ne fais même pas ça. Nous pouvons faire ma classe et ma fonction et simplement appeler ça comme ça. Et quand on reviendra sur notre page,
on a vu que j'aime Coop. Ok, donc c'est toute l'idée ici. Et ce que cela encore, Qu'est-ce qui nous permet de faire ? Juste créer une classe n'est pas ce que je veux dire, techniquement c'est, mais ce n'est pas vraiment dans l'esprit de nécessairement dans l'esprit de l'objet lors d'une programmation. OK, mais ce qu'il fait, c'est qu'il nous donne la base sur laquelle nous pouvons maintenant commencer engager dans la programmation orientée objet. Et nous pouvons créer des ah
individuelles, des classes individuelles pour ah, gérer des fonctionnalités individuelles. Et c'est vraiment le but de tout ça. Est-ce pour n'importe quelle sorte de chose que vous voulez faire dans votre application, c'est-à-dire, vous savez, plus qu'une seule fonction, vous voulez commencer à penser à le mettre à l'intérieur d'une classe et à avoir cette classe tout. Ainsi, par
exemple, si vous regardez le CMS CIA,
vous aurez dans un CMS , vous aurez besoin de créer une mise à jour d'édition, supprimer des messages, droite, eh bien, que vous devriez avoir une classe qui gère essentiellement tout cela. C' est votre genre de classe post et il fait tout ce qui doit être fait pour cet objet
particulier. Donc ça va vous permettre de le créer. Il va faire toute l'interaction avec la base de données qui doit se produire avec votre classe de
base de données. Cela doit se produire pour l'insérer dans la base de données. Il va faire toute l'interaction dont vous avez besoin pour extraire des choses de la base de données upstate, mettre à jour des choses dans la base de données, supprimer des choses dans la base de données et tout ce que vous pourriez vouloir faire appartient à cela. Donc maintenant, vous avez que tout autonome dans une classe et tout ce que vous avez à faire au lieu de réécrire ce code à chaque fois,
chaque fois que vous voulez obtenir un post de la base de données, au lieu d'avoir à réécrire toute la base de données vêtue qui est nécessaire pour faire cela, vous avez créé à la place une fonction ou une méthode à l'intérieur de votre classe qui fait tout cela, et peut-être tout ce que vous devez faire dans l'ordre. Disons juste ce mot que vous passez dans le post I d. et donc disons que c'est,
ah, ah, obtenir la fonction. C' est une fonction de lecture. Vous passez dans le post I d. Et il fait toute la connexion se connectant à la base de données, obtenir que je d. de la base de données. Ne pas tirer ces données, les mettre dans quelque chose que vous pouvez travailler, qu'il s'agisse d'un objet ou d'un PHP iranien, puis vous le retourner. Donc maintenant, vous pouvez être comme post égal à ma fonction. Et maintenant, sur post, vous auriez accès à, disons, pas d'écho post titre echo post contenu, etcetera. Vous auriez accès à toutes les données à l'intérieur de cela. Et puis peut-être qu'il y a des fonctions d'aide que vous avez à l'intérieur de cette classe qui vous
permettent , je ne sais pas. Peut-être que tu veux faire l'écho, et tu vas faire le format et,
ah, ah, date de
publication ou quelque chose comme ça. Ok, donc et peut-être que vous pourriez juste, vous savez, peut-être que vous auriez à porter quand vous appelez Post Date. Il est déjà formaté. Vous, bien
sûr, pourriez le faire. Mais l'idée est que vous pouvez créer des méthodes qui sont des aides ou qui vous permettront de faire quelque chose lié à cet objet que vous pourriez vouloir faire. Donc, toute l'idée est à nouveau, n'
est pas seulement de savoir comment créer une classe, mais comment la prendre. Et puis pour les objets que vous avez dans votre application et les choses que vous voulez, ces objets doivent être en mesure de vous faire sexe. La règle générale est que vous allez créer une classe pour chacun de ceux qui va gérer toutes les choses que vous devez faire maintenant. Encore une fois et je ne veux pas être trop confus ici. Mais c'est une couche secondaire que ces classes seraient placées au-dessus de,
ah, couche
plus fondamentale, couche
plus fondamentale, qui serait votre classe de base de données. Avez-vous vu des choses que j'ai faites avec les classes de base de données ? Vous savez que ces classes ont des fonctions. Ils ont une fonction d'interaction de base de données interactive de base, sorte que vous n'avez pas à écrire toutes les requêtes. Vous pouvez simplement appeler des méthodes à partir de la classe de base de données afin que votre classe de poste ne soit pas interroger la base de données directement. Il s'agirait d'appeler des méthodes à partir de votre classe de base de données, et c'est ainsi que vous coupez une application. Si vous regardez, disons, par
exemple, WordPress, ils ont une classe de base de données WordPress. La seule chose que la classe de base de données fait est d'interagir avec la base de données. Il y a donc quelques méthodes, comme obtenir des résultats Get row Queary Update. Supprimez etcetera qui sont des méthodes que vous appelez et vous n'exécutez pas les requêtes. Vous transmettez simplement des données. Vous passez une information qui à ce que les méthodes nécessitent les paramètres, et il fait tous les éléments de base de données pour vous connecter, exécuter les requêtes, retourner les résultats gère tout cela. C' est donc une classe de niveau de base. Mais en plus de cela, ils ont une classe de requête dans ces classes de requête comment ils interrogent les publications et les pages et les
catégories, etc. Donc, la classe de base de données est une classe fondamentale qui est une classe de niveau de base qui interagit directement avec la base de données. Queary est une classe qui n'interagit jamais avec la base de données. Tout ce avec quoi il interagit, c'est la théorie. Classe de base de données WordPress. Encore une fois, c'est comme ça que tu couches. C' est ainsi que vous utilisez des classes pour superposer une application. Et c'est la chose à laquelle je veux que vous commenciez à penser est comment puis-je commencer à prendre tout ce code que j'ai que peut-être toutes sortes de liens entre les requêtes et les vues
frontales que j'affiche dans la base de données, c'est toute sorte de mélange ensemble. Comment puis-je commencer à le séparer pour créer des classes individuelles qui font des choses individuelles Avoir une classe qui interagit avec la base de données. Tous les autres cours sont assis dessus. Toute classe qui veut interagir avec ma base de données doit passer par ma classe de base de données. Et alors j'ai, vous savez, peut-être une classe de requête ou une classe de poste et puis, vous savez, peut-être que vous avez une classe de views qui se trouve au-dessus de cela, une exception. On pourrait parler d'autres choses,
mais je voulais juste que ton esprit réfléchisse dans cette direction. Encore une fois, être capable de faire ce que nous avons fait ici est le fondement de tout cela. Donc, c'est un moyen
vraiment, vraiment simple et
simple de créer une classe,
comment créer une propriété, comment créer une méthode en position, dater une instance de la classe, puis appelant une méthode à partir de cette classe. Donc j'espère qu'il a quelque chose de ça. Nous allons évidemment continuer à nous appuyer sur cela au fur et à mesure que nous traverserons. Ah, le reste de ces leçons que je verrai dans les prochaines vidéos
3. Constructeurs: Hey là, John Morrissey, John Morse dot com en ligne Cette leçon. On va parler des constructeurs. Et donc ce que les constructeurs vous permettent de faire est de faire fonctionner quelque chose automatiquement lorsque vous et Stan installez une instance d'un objet. Donc, pour vous montrer cela, continuons et copions tout ce code ici et ouvrons notre nouveau fichier. Et donc nous allons créer une nouvelle fonction appelée Fonction publique et sous
underscore construction. Alors c'est le nom. C' est comme ça que vous nommez le constructeur. Si vous regardez des tutoriels vraiment anciens, vous pouvez voir des tutoriels où il y a une méthode qui a le même nom que la classe. Donc ça aurait pu être quelque chose comme, hum, fonctionner ma classe. C' est ainsi que les constructeurs ont été faits dans le passé. Mais maintenant, il y a une méthode constructeur réelle que vous voulez utiliser. Je pense qu'à ce stade, il le fera même. Si vous utilisez le nom de la classe pendant un certain temps, ils sont tous les deux fonctionneraient cette méthode constructeur et la fonction avec le même nom est la classe. Je ne pense pas que la fonction avec le même nom de la classe fonctionne même plus, et peu importe que vous voulez l'utiliser. Vous voulez utiliser cette méthode de construction ici. Donc, ce que cela fait est tout ce que vous mettez à l'intérieur de cette méthode. Quand vous et Stan avez déclaré une incidence de la classe, il va exécuter cette méthode automatiquement. Tu n'as pas à l'appeler ou quoi que ce soit comme ça. Et c'est donc bon pour tout ce que vous devez faire pour configurer votre base de données. Moi ? Je ne sais pas. Peut-être qu'il y a peut-être que vous voulez mettre si vous écrivez une classe de base de données, vous voulez mettre vos détails de connexion ma suite là-dedans ? Ou peut-être qu'il y a quelque chose que vous devez faire avec Post à notre Il y a beaucoup de choses que vous voudriez faire dans un constructeur. Mais l'essentiel est qu'il fonctionne quand ce client est des cours et Stan assis. Donc, juste une sorte de te montrer ça. Ce qu'on va faire, c'est prendre ce var, et on va le changer en homme. Coop, ça
va ? Eso ce que nous avons essentiellement fait ici est que nous avons cette variable que nous avons configurée ici, mais maintenant dans notre constructeur la réinitialisait à quelque chose de différent. Et donc quand on instaure huit une instance de cette classe. Ce qui devrait arriver, c'est que cela va courir. Et cela écrasera ce que nous avons défini ici. En fait, très vite. J' ai besoin de supprimer cette idée de poste parce que nous n'en avons pas réellement un. Et maintenant, quand nous descendons ici pour faire écho à cela,
cela devrait faire écho à ce que nous avons mis dans notre constructeur ici. Alors allons de l'avant et chargeons cette page et vous pouvez voir que nous sommes fâchés. Hoopers, je Donc c'est ce que les constructeurs nous permettent de faire. Et maintenant, il ne doit pas être simplement des variables écrasantes qui pourraient être littéralement tout ce que vous voulez faire ici que vous devez configurer. Cela doit fonctionner correctement quand ce n'est pas une position que le reste de la classe va dépendre à peu près maintenant. Une autre chose que vous pouvez faire avec des constructeurs et importante à savoir est que vous pouvez mettre variables, alors continuons et changeons simplement une variable ici appelée texte. Maintenant, au lieu de coder ça ici, nous pouvons nous en débarrasser. Nous pourrions définir cela égal au texte. Donc maintenant ce qui va se passer, c'est qu'on peut passer le texte dans notre classe quand on le
mangera et je te montrerai le faire dans une seconde. Nous pouvons passer cela et maintenant sont variables. Ah, de ça. Cette variable ici sera définie sur tout ce que nous passons. Et donc ce que vous avez est une sorte de chose assez standard que vous verrez dans les classes en ce que dans la décoration variable apparaît, vous aurez une sorte de valeur par défaut. Cela sert maintenant essentiellement comme un défaut. Et ici Non, vous aurez quelque chose que vous pouvez le remplacer dans votre constructeur ici. Ok, Donc si nous venons ici maintenant, pour utiliser ce texte, nous devons ajouter entre parenthèses et ensuite nous pouvons passer notre texte juste ici. Donc si nous gardons ça et rafraîchissons que nous allons toujours avoir May Lupas I et alors nous pouvons changer ça à n'importe quoi. Nous voulons juste dire bonjour et vous pouvez voir maintenant que ça passe. Maintenant, si vous commencez à réfléchir un peu à ça, vous pouvez commencer à voir la puissance d'une partie de cela parce que maintenant vous pouvez. Quel que soit ce texte, il y a que vous pourriez passer et peut-être que vous voulez former à ce texte. Peut-être que tu veux orteil. Je ne sais pas. Il y a aussi peut-être sur un, euh, changer ce que le texte est basé sur certaines conditions ou il y a toutes sortes de
routines différentes . Vous pouvez exécuter ce texte qui a été transmis, mais vous pouvez littéralement transmettre n'importe quel texte. Et donc c'est toute l'idée de ce qu'est vraiment une classe quand on parle de Oh, en termes conceptuels, que la classe est un plan et l'objet est la chose réelle. Et ce sont les données que vous avez lorsque vous mangez une instance d'une classe qui change ce que vous obtenez du Blueprint. Donc, vous savez, un plan pour une maison ne vous indique pas la couleur de la maison. Donc, quand vous allez créer la maison, c'est quand vous décidez de la couleur. C' est la même idée. Ça ne vous dit pas ce que le texte doit être, est-ce
pas ? Ça ne dit pas, Ok, nous avons peut-être une sorte de défaut, mais ça ne dit pas vraiment ce qu'est le texte. Vous pouvez transmettre n'importe quel texte. Alors maintenant cet objet. Ok, si on recommence, on ira. Il suffit d'aller une nouvelle classe et référencera une nouvelle classe ici. Nous pouvons nous débarrasser de ce post trucs égaux. On n'a pas besoin de ça ici. Ok, donc je veux te montrer ça. Nous avons donc deux instances différentes de notre classe. Le plan est le même. Mais tout ce que nous avons fait est de créer deux instances différentes et nous avons transmis des données différentes. Donc nous avons ma classe, et ensuite nous exécutons ma fonction. Nous avons une nouvelle classe qui passe. Hey, donc si on rafraîchit ça tu vois, on a du haut et on a Hey, air littéralement deux objets différents. Ces air, deux maisons différentes. Et la façon dont nous les modifions est basée sur les données que nous avons transmises à notre classe ici. Donc c'est le pouvoir de ça. On change. Rien ne semblait avoir ces deux cas. Maintenant, bien
sûr, comme vous avez des applications plus complexes, vous allez avoir des classes complexes Mawr. Ils vont condamner ou des choses complexes. Et donc les différences ici, et peut-être les données que vous allez transmettre ici ou les données que vous êtes graphique à partir d'une base de données ou autre . Quoi qu'il arrive de faire, ça va rendre ces deux objets très, très différents. Si vous y pensez, prenez
simplement WordPress. Si vous pensez à deux messages WordPress différents, auront-ils un titre complètement différent ? Vous avez un contenu complètement différent ? Ils vont avoir une date d'image complètement différente qu'ils ont été créés, peut-être auteur. Il y a vraiment deux complètement différents à poster sur un blogueur, deux complètement différents mais le plan de base de classe pour les amener au point où ils sont affichés sur la page et le stockage dans la base de données et tout ce qui doit arriver. La classe est la même, vous pouvez
donc créer deux objets très différents à partir du même Blueprint. Et c'est vraiment ce qu'est la programmation orientée objet et revenir à des
objets individuels en quelque sorte d'avoir des classes individuelles qui traitent et gèrent avec la poignée là-bas. Ils sont fonctionnellement, ce n'est pas un gros dur, et je ne veux pas induire en erreur et dire ensuite que c'est une règle difficile et
rapide. Vous devez absolument le faire, mais c'est le genre de façon générale que vous regardez. Ah, au moins à une ligne de base comment vous regardez l'objet pendant la programmation donc encore une fois qui traite avec les constructeurs. C' est ce qu'ils vous permettent d'ajouter à vos classes qui
les rendent vraiment, vraiment puissants. J' espère que tu en as sorti. Merci d'avoir regardé. On parlera à la prochaine.
4. Visibilité: Hé, John Morris. Ici, John Morris, point com
en ligne. Cette leçon que nous allons entrer dans la visibilité et la visibilité traite spécifiquement de la facilité, les désignateurs ces mots-clés ici. Pas de rue que vous pouvez avoir. Il y a du public, il est protégé et il y a du privé. Donc je vais copier ce code ici. Nous allons entrer dans notre nouveau dossier, et je vais créer quelque chose de très rapide qui aidera, je pense, rendre ce peu plus clair. Donc je vais créer une classe. Une nouvelle classe étend ma classe. Bon, donc ce que ça fait, c'est de créer une classe enfant. Donc, cette classe ici, celle
qui fait l'extension est considérée comme l'enfant, et celle qui est étendue est considérée comme le parent. Et la raison en est que lorsque vous faites cela,
ce qui se passe est que vous obtenez un accès à l'intérieur de la nouvelle classe. Vous avez accès à toutes les propriétés et méthodes qui sont disponibles à l'intérieur de la classe parent
d'origine si elles ne sont pas privées, et de sorte que les transactions avec sont en quelque sorte des désignateurs ah ici. Donc je veux vous montrer ce genre de haut en bas. Donc, quand nous venons ici et nous avons position une nouvelle instance d'une classe et nous appelons notre fonction ou sont la méthode ma fonction La raison pour laquelle nous sommes capables de le faire Et si nous rechargeons
cette page,
vous pouvez voir que cette page, nous devenons élevés. La raison pour laquelle nous faisons cela est que cette méthode est définie au public. Si je viens ici et que je mets ça à autre chose que publique, alors mettons-le en privé
pour commencer. Si je dis ça à privé, j'ai un air. Si je l'ai dit à protégé et qu'on recharge, je prends l'air. C' est donc le premier type de désignation et la façon d'expliquer cela. Je pense visuellement que cela aidera. Mais les méthodes privées et les propriétés sont disponibles sur Lee ici, Onley dans le funk ou la classe et qui les a créés si privés. Sont Onley disponibles ici protégés vont être disponibles dans la classe qui
les a créés et toutes les classes enfants ok et ensuite public seront disponibles dans la classe qui lui
a créé toutes les classes enfants et en dehors de la classe. Donc, pour y accéder et l'utiliser une méthode ou une propriété ici, il doit être mis en ligne publique. Ok, alors passons par quelques exemples. Allons-y et remettons-le au public. Et allons-y et mettons-le en privé. Maintenant ton instinct est peut-être Oh, non, on utilise le privé ici et on l'appelle ici. Alors, on appelle ça ici, pour que ça ne marche pas. Et ils sont en fait qui fonctionnent. Et la raison en est que ce que nous appelons ici est sur Lee la méthode ma fonction . C' est la méthode my function qui fait maintenant référence à cette variable. Et ces deux choses sont dans la même classe, donc ma fonction peut utiliser cette variable privée. Ok, donc c'est pour ça que ça marche. Nous ne serions pas en mesure de venir ici et aller var comme ça, nous ne serions pas en mesure d'accéder au saindoux directement parce que notre est une propriété privée. Donc, il dit que nous ne pouvons pas accéder à la propriété privée. Bon, donc c'est une bonne chose à garder à l'esprit. Et puis un autre exemple traitant des classes enfants. Si nous venons ici et nous créons une nouvelle fonction publique fonctionnelle l'appellera affichage et à l'intérieur de celui-ci. Nous allons simplement faire écho Ah, ceci et var. Ok, donc on va faire écho à ce var. Souviens-toi, c'est notre privé. C' est une propriété privée, donc elle ne devrait pas être disponible ici. Donc, si nous changeons ceci en nouvelle classe et que nous avons changé ceci en ah, afficher et nous allons juste nous débarrasser de ce relax, ça laissera ça une seconde. Donc maintenant, ce que nous essayons de faire est à l'intérieur de l'écran. Nous essayons de faire écho à cette propriété privée. Si on essaie de faire ça, tu vois, c'est vide, on n'a rien. Et c'est parce qu'on n'a pas accès à ça. Maintenant, si je viens ici et que je change ceci en protégé Donc rappelez-vous maintenant, protégé est disponible pour la classe d'origine et toutes les classes enfants, et je réexécute ceci. Maintenant, j'y ai accès. D' accord. Donc, encore une fois, c'est la différence entre privé protégé et public. Maintenant, les instances où vous pouvez vouloir le faire beaucoup de fois, vous pouvez avoir une méthode que vous utilisez à l'intérieur d'une classe que vous Onley avez l'intention d'utiliser à l'intérieur de cette classe. Bon exemple. Je peux penser à est, disons que vous créez une classe de poste et disons que lorsque vous tirez les données de publication de la
base de données avant de l' afficher,
vous voulez que l'orteil soit formaté d'une certaine manière. Donc WordPress, par
exemple, est-ce que cela a, ah, cette fonction ah ou cette méthode appelée WP auto Top notre auto WP auto P ou quelque chose comme ça ? Fondamentalement, ce qu'il fait, c'est qu'il prend ce qu'il obtient de l'éditeur de texte enrichi, qui arrive à ajouter des sauts de ligne à la place des balises de paragraphe. Ainsi, lorsque vous écrivez dans WordPress et que vous créez un nouveau paragraphe lorsqu'il est enregistré dans la base de données, il n'est pas enregistré dans les balises de paragraphe qui sont enregistrées avec des balises de rupture. Donc, ce que WP Auto P fait c'est quand il saisit cela de la base de données et qu'il change ceux sur ? C' est une sorte de méthode de mise en forme compliquée, mais elle change ces balises de rupture et découvre où les paragraphes dans lesquels ils sont censés se
trouver utilisent réellement des balises de paragraphe. Donc c'est juste que c'est un truc de formatage. Eh bien, cette méthode de formatage peut ne pas être quelque chose que vous voulez disponible pour tout le reste et juste pour mettre un point fin dessus. Si vous avez une méthode de formatage pour, disons, par exemple, votre classe de poste, vous ne voulez vraiment pas avoir cela que aussi disponible pour, disons votre classe de catégorie. Ok, donc vous voudriez vraiment que ce soit une méthode privée parce que vous ne voulez pas utiliser une sorte d'avoir une classe de catégorie qui utilise une méthode de votre post classique deux objets
complètement différents. Ce n'est pas vraiment une bonne chose de le faire sur une meilleure pratique. Si vous voulez créer une méthode de formatage que vous avez ensuite utilisé dans, disons, catégorie et post sur DSO quatrième. Où vous feriez est de prendre cette méthode de formatage meth hors de la classe post et
vous créeriez une classe de format, et ensuite vous voudriez chaque fois que vous vouliez formater quelque chose, vous appelleriez cette classe de format, et vous pouvez l'appeler de la catégorie. Ou vous pouvez l'appeler de la poste. Vous pouvez l'appeler de n'importe où, mais vous le feriez. Vous l'encapsulez dans sa propre chose si vous vouliez l'utiliser dans plusieurs classes, vous ne voulez pas utiliser une méthode de, vous connaissez une classe dans une autre classe. manière générale, vous voulez les garder encapsulés pour être leurs propres choses. Et donc l'une des façons de le faire est de les faire des méthodes privées. S' il s'agit d'une méthode privée ou d'une propriété privée, d'autres classes peuvent y accéder. Ou si c'est ah, protégé. D' autres classes peuvent y accéder à moins qu'elles ne s'étendent. Ah, le seul Ah, ils prolongent la classe d'origine. Encore une fois, c'est la différence entre le public. Peyron a protégé que certaines des informations de fond dans le contexte sur le moment où vous
voudriez utiliser ces Ah, et ainsi de suite. Donc j'espère avoir trouvé cela utile. Merci d'avoir regardé, on sera caché dans la prochaine.
5. Inheritance: Hé, là. John Morrissey, John Morse dot com en ligne Cette leçon. On va parler d'héritage, depuis qu'on a commencé un peu. La dernière leçon serait aller de l'avant et en quelque sorte aller tout dans cette leçon. Alors allons de l'avant et copions. Ce code que nous avions de moins de quatre viendra ici à cette leçon. Et donc cette extension d'une classe est en fait assez simple. Et ce qu'il vous permet de faire est d'hériter de toutes les fonctionnalités qui ne sont pas privées de la classe d'origine. Donc, quand nous parlons de ceci et que nous avons une nouvelle classe qui étend ma classe de nouvelles classes, ce que nous appellerions la classe enfant et mes classes ce que nous appellerions la classe parent puisque nouvelle classe étend ma classe, ma classe est le parent et la nouvelle classes. L' enfant hérite de nouvelles classes, héritant de ma classe. Ok, Donc, encore une fois, ce que cela nous permet de faire est tout ce qui est protégé ou public que nous pouvons utiliser dans cette nouvelle classe. Maintenant, la façon dont nous pouvons voir cela est si nous allons à et nous changeons ceci en nouvelle classe Maintenant gardez à l'esprit, nous n'avons aucune fonctionnalité dans une nouvelle classe ici. Tout ce qu'on fait, c'est prolonger ma classe. Mais nous appelons toujours cela ma méthode de fonction ici. Alors allons-y et chargeons ça. Et vous voyez, nous avons ce haut juste ici. Donc, même si nous n'avons rien ajouté dans une nouvelle classe, nous avons hérité de toutes les fonctionnalités de notre classe parent d'origine. Maintenant, juste pour vous montrer, si nous changeons ceci en protégé et que nous rechargeons cela, alors vous pouvez voir que nous obtenons cet appel à cette méthode protégée. Ok, donc nous appelons ça en dehors de la classe ici, et cette fonction est protégée. C' est pour ça que nous n'avons pas accès à ça. Et si on le fait, tu sais, privé comme ça , bien sûr, on l'aura aussi. Maintenant, quelque chose que nous pourrions faire, c'est que nous remettions ça en protégé. Et disons que nous ajoutons une nouvelle méthode à l'intérieur d'ici. Donc faire fonction publique, et nous allons faire l'affichage et l'affichage à l'intérieur. Tout ce qu'on fait, c'est qu'on appelle ça et on appelle ma fonction, puis on va mettre notre point-virgule . Oh, voici une nouvelle classe que nous appelons affiche la nouvelle méthode que nous avons créée notre nouvelle classe. Alors allons de l'avant et lançons ça, vous voyez, on se défonce à nouveau. Maintenant, la raison pour laquelle nous sommes élevés est parce que nous sommes de nous appelons ma fonction maintenant
à partir d'une classe qui l'étend. Donc, même si c'est protégé, nous l'appelons toujours à partir d'une classe qui l'étend. Donc c'est permis. Et maintenant, nous appelons l'affichage de la fonction publique. C' est ce qu'on appelle ici. Donc, ce que nous aurions à faire, c'est si nous mettions ça en privé, nous mettrons ça à Private. Ah, maintenant on va passer l'appel aérien fatal à Method privé. Ok, donc on ne peut pas faire ça. C' est ainsi que fonctionne l'héritage dans tout cela. Maintenant encore une fois, vous savez comment vous voulez Teoh, utilisez ces exemples de la façon dont vous pourriez utiliser cela. Je veux dire, disons-le. Un exemple que je peux penser est, disons que vous obtenez ah, sur SDK à partir d'un site, comme peut-être YouTube pour interagir avec C'est un P I, et vous voulez construire un wrapper autour de ce Eh bien, l'
une des façons dont vous pourriez le faire serait simplement d'étendre n'importe quelle classe ou classes qui sont habituellement dans ce cas SD, il y aura, comme, une sorte de classe basée standard que vous afin que vous puissiez étendre cette classe. Um, afin d'utiliser sa fonctionnalité, apportez toutes ses fonctionnalités disponibles à votre nouvelle classe que vous allez bien, c'est un rappeur, que parce que vous allez vous utiliser pour avoir été d'une manière spécifique afin que vous pourrait prendre quelque chose qui est là, que quelqu'un est écrit là-bas qui existe. Ou peut-être que vous avez écrit et que vous pourriez l'étendre, puis ajouter votre propre
fonctionnalité très spécifique ou vous avez,
disons, disons, une classe de base de données. Et disons que nous avons parlé d'une classe de requête dans la classe de base de données. Peut-être que la façon dont vous voulez utiliser votre classe de base de données est simplement de l'étendre avec votre classe de
requête. Maintenant, vous voulez être un peu prudent à cause de la façon dont
fonctionne l'héritage multiple . Et cela pourrait devenir un peu délicat quand vous le savez, si vous voulez utiliser votre classe de base de données et dans la requête et peut-être dans une autre classe dans une autre classe que cela peut tous devenir un peu délicat. Mais ah, vous savez, si c'est les requêtes, la seule classe va interagir directement avec la classe de base de données, alors peut-être que ce serait une option pour vous pourriez le faire. Ce n'est pas la seule façon d'interagir avec la classe de base de données,
mais encore une fois,
c'est une option. Ce n'est pas la seule façon d'interagir avec la classe de base de données, mais encore une fois, Ou peut-être que vous créez une classe d'objet qui ressemble à un framework de base. Et puis à partir de cela, vous créez une classe de poste très spécifique qui ajoute à ce que vous avez un objet afin que vous puissiez, ah, avoir des choses très spécifiques pour la publication. Donc encore une fois, je suis juste jeté à quelques exemples de différentes façons que vous pourriez être en mesure d'utiliser ceci. Mais encore une fois, le gros est que cette nouvelle classe va prendre toutes les propriétés et toutes les méthodes de sa classe parent. Ah, tant qu'ils sont publics ou protégés. Il y a quelques choses à garder à l'esprit ici. abord, quand il s'agit de constructeurs, la classe enfant n'appellera pas automatiquement le constructeur de la classe parent, vous devez
donc utiliser une sorte de syntaxe spécifique. Donc on devient public et on va aller fonctionner. Et nous allons créer notre propre constructeur à l'intérieur de notre ah, à l'intérieur de notre classe d'enfants. Maintenant, si on laisse ça comme ça, tu peux voir qu'on recommence à me faire aimer Coop. Maintenant pourquoi ? Pourquoi sommes-nous retournés à ça ? Parce que nous avons surmonté avant que nous n'ayons pas de constructeur dans notre classe enfant. Donc nous avons juste utilisé la classe parent. Maintenant, nous avons réellement créé la classe enfant initié constructeur. Il écrase le parent. Donc ce parent ne va pas se faire courir. C' est pour ça qu'on remonte aux pieds. J' aime Coop parce que nous avons besoin de ce constructeur parent pour écraser ce qui était dans notre variable ici. C' est pour ça que ça arrive maintenant. Peut-être que ce pourrait être le cas où vous voulez que ce constructeur fonctionne encore. Donc, ce que vous faites est que vous utilisez le deux-points parent, puis construisez Donc, vous
appelez essentiellement cette méthode parent. Donc maintenant, cela va provoquer l'exécution de ce constructeur parent. Donc, si nous réexécutons ce Ah Oh, en fait, nous devons passer nos variables, alors allons texter et nous avons besoin de texte. Bon, donc nous avons variable. Nous devons donc nous assurer de les mettre là-dedans. Donc maintenant, si on réexécute ça, on revient à se défoncer. Donc c'est quelque chose à garder à l'esprit quand vous travaillez avec ça. Cela ouvre aussi quelque chose. Ah, que nous ne pouvons pas que cela ne soit pas immédiatement évident, mais cela vous montre comment vous pouvez le faire parce que nous avons cette classe constructeur ici et nous
avons une méthode constructeur ici. Vous pourriez penser. On en a deux du même nom. C' est ainsi que vous remplacez les méthodes de la classe parent dans votre classe enfant. Ainsi, par
exemple, nous pourrions créer une méthode appelée public et nous pourrions recommencer ma fonction. C' est le même nom que nous avons ici maintenant au lieu de simplement faire Ah, laissez-moi aller de l'avant et ma fonction. Mot clé. Je suis horrible à ce sujet. En fait, vous remarquerez peut-être que je fais ça même quand je m'habille seul. Ma fonction maintenant, ce qu'on peut faire, c'est peut-être qu'on veut changer ça. Peut-être qu'on veut prendre Eco ce var, et ensuite on va y ajouter quelque chose. C' est comme, hum bonjour. Eh bien, c'est juste hors de période depuis qu'on l'a fait dans l'original. Je m'appelle John. Ok, alors allons-y et rafraîchissons ça. Vous pouvez voir maintenant que nous avons Salut, je m'appelle John. Donc, nous avons deux méthodes avec le même nom, mais il n'y a pas d'erreur car ce que fait PHP est quand vous étendez comme ça,
cette classe écrasera la classe dans le parent. Ok, c'est
ainsi que vous pouvez étendre une classe et avoir accès aux données disponibles dans le parent ou aux fonctionnalités disponibles dans la classe parent. Et puis s'il y a certaines méthodes à l'intérieur de cette classe que vous voulez écraser, vous pouvez le faire aussi. Et évidemment, si vous voulez ici, vous pouvez remplacer les propriétés. Je veux dire, aussi bien que
tu pourrais, tu sais, ce var est d'accord, alors voyons ce que ça nous donne. Maintenant, nous avons quelque chose de différent. Je m'appelle John. Pourquoi on a ça ? Parce que rappelez-vous, nous sommes passés en haut est tout ce que nous avons passé pour que cela aille à cette classe haute. Mais on passe ça par notre parent. Notre parent vient ici et dit, OK, que ce var est maintenant égal à test. Ensuite, nous avons juste après cela changé ce var à quelque chose de différent. Donc, en gros, c'est un, euh, écrit par ça juste ici. Et maintenant c'est ça que nous allons utiliser ici quand nous faisons ça arrêté loin de nos règles. Je m'appelle John. Ok, donc ça pourrait être un peu déroutant. Mais ce que j'essaie de vous montrer, c'est que vous pouvez remplacer pratiquement tout à l'intérieur de la classe
parent. Les méthodes, les propriétés, tout ce genre de choses. Ainsi, vous pouvez saisir la fonctionnalité que vous voulez, puis si vous voulez, il y a que vous voulez ajouter à ce qui est là, vous pouvez y ajouter en créant de nouveaux. Vous pouvez créer de nouvelles méthodes à l'intérieur d'ici comme nous l'avons fait avec l'affichage. Vous pouvez également remplacer les méthodes existantes et les propriétés existantes à l'intérieur de celui-ci. Maintenant, la dernière mise en garde. Disons que je mets ce mot clé final ici sur ma fonction. Allez-y et rechargez ce que vous voyez, nous disons ne peut pas remplacer la méthode ma classe, ma fonction. Donc, lorsque vous créez votre classe parent, si vous voulez créer une méthode qui ne peut pas être remplacée par des classes enfants, vous devez utiliser ce mot-clé final ici, ce qui empêchera quelqu'un de pouvoir le faire. Ok, donc c'est vraiment une plongée profonde dans l'héritage. J' espère
que c' est assez clair pour vous. Si ce n'est pas le cas, je dirais juste revenir en arrière et ensuite vraiment entrer là et commencer à jouer. Et elle change les mots-clés de privé à orteil protégé, prolongeant une nouvelle classe dessus. Monte juste là et joue avec ça. J' ai entendu cette belle citation l'autre jour. Cette clarté vient de l'action, pas de la pensée, sorte que je pense que c'est très, très vrai. Et ça va être très, très vrai dans ce cas. Plus le message sera utilisé, plus il aura du sens et deviendra clair pour nous. Alors entrez et commencez à jouer avec ce truc, accord, qui le fera pour cette leçon. Merci d'avoir regardé. Nous vous parlerons le prochain
6. Méthodes et propriétés statiques: Ici, John Morris, Joe Morris, point com
en ligne. Cette leçon. Nous allons entrer dans les propriétés et les méthodes statiques et vraiment parler du
mot-clé statique parce que c'est ce que vous ajoutez aux deux. Cela les rend statiques. Alors allons de l'avant et copions ce code ici et allons dans notre nouveau fichier cheveux. Et on va citer, sorte de simplifier ça une seconde pour que je puisse vous montrer ça. Je vais me débarrasser du constructeur une seconde. Je vais changer ça en public, et on changera cet orteil public et on l'appellera ajoutera ce mot statique. D' accord. Et puis venons ici et instamons une nouvelle instance de notre classe. Alors on y va. Ma classe est nouvelle ma classe. Vous n'avez pas de constructeur maintenant, donc nous n'avons pas besoin de nous inquiéter à ce sujet. Et voyons ce qui se passe si on va dans ma classe. Tu connais ma fonction. Donc on fait ce qu'on a fait avant, non ? Nous avons une méthode. Ma fonction, nous référençons notre propriété apparaissent et nous sommes ici et nous voulons juste faire écho à cela et en fait, une autre chose que je dois faire avant de faire cela, vous pouvez ou non avoir besoin de le faire. Mon système supprime les airs. Donc j'ai besoin d'activer le reportage aérien et donc à nouveau, vous pouvez ou ne pas avoir à le faire parce que certaines des erreurs allaient arriver ici ne sont pas véritables airs mortels. Ils vont être des avis. Et donc je veux juste que tu puisses voir ça. Et si je ne fais pas ça, tu ne pourras pas détruire voir ces quelqu'un pour afficher des airs, et on va mettre ce Teoh vrai. Bon, donc ça devrait être ce qu'il nous faut ici. Alors allons-y et rechargeons ceci et voyons ce qui se passe. Donc, il dit des normes strictes accédant à la propriété statique. Ma classe de notre comme non statique dans bulle en ligne neuf. Donc, ici, nous référençons sont variables comme nous l'avons fait avant. Mais maintenant ça nous donne cet air que nous le référons comme non statique. Donc, c'est une sorte de première sorte d'introduction à ce que cela signifie réellement Lorsque nous créons A quand nous créons une variable statique ou une méthode statique comme celle-ci Ce qu'il
fait est cela fait que cette variable, par
exemple, existe fondamentalement en dehors de ce que je dirais, la portée de l'objet de cette classe signifiant si j'ai essayé de l'utiliser n'importe où dans ma classe et utilisé cette variable ici, cela ne fonctionnera pas parce que je l'ai changé en une variable statique. Et il n'est pas destiné à être utilisé dans la portée de l'objet, ok ? Et c'est la même chose si j'essayais de venir ici et essayons d'accéder directement à la propriété. Donc, si j'essaie d'y accéder directement, allez-y et rechargez et accédant à nouveau à la propriété statique ma classe comme non statique. Donc, lorsque vous le rendez statique, cela le rend de sorte que vous ne pouvez pas y accéder via cet objet. Depuis la syntaxe,
il ne fait plus partie de ce contexte d'objet. Alors maintenant, ce que vous devez faire pour y accéder, c'est que vous devez utiliser le dont vous avez besoin pour accéder et ce qui est réellement directement. Donc maintenant, nous allons faire mon cours, et vous avez peut-être vu ça avant, et ensuite faisons ma fonction comme ça,
ok, et en fait, et en fait, nous avons besoin de Teoh. En fait, c'est loin et je pense que c'est comme ça. Donc si on veut l'accès aux orteils, la clé était comme ça. Nous devons nous assurer ou la propriété. Nous devons nous assurer de mettre notre, hum, en
faire une variable réelle ici. Alors allons de l'avant et rechargeons ceci et continuons, faisons
écho. Alors maintenant, nous obtenons que j'aime le cerceau. Alors maintenant, on y a accès. Donc ce que je viens de faire car j'ai pu accéder à une propriété de classe sans instance manger une instance de la classe. C' est finalement ce que les mots-clés statiques vous permettent de dio. Et nous pouvons faire la même chose avec notre méthode ici. Alors passons cela à Static. Revenons en fait à la normale, puisque nous allons
faire ça. Alors allons-y et faisons mon cours. Ma fonction comme ça, je veux te montrer ça. Maintenant, vous pouvez voir l'air fatal en utilisant cela quand il n'est pas un contexte d'objet. Encore une fois, nous y accédons. C' est une fonction statique, donc nous ne sommes pas dans le contexte de l'objet. Donc ça ne marche pas sur ça. Lee est créé lorsque vous instances e huit Une instance de la classe. C' est à ce moment que cela devient disponible. Comme nous ne l'avons pas fait, ce n'est pas disponible. Alors allons-y et faisons-le. Euh, hein. moment, non, nous n'avons pas rendu ça statique ici, donc nous allons aller de l'avant et rafraîchir cet accès à la propriété statique non déclarée. Donc maintenant, nous revenons ici et nous changeons ça en statique, et nous rechargeons. Et maintenant nous obtenons ce que nous voulons. Donc, je ne veux pas vous montrer, c'est que lorsque vous commencez à utiliser le mot-clé statique, il commence en quelque sorte à prendre le contrôle de tout ce que vous dio. Donc vous voulez être un peu prudent sur la façon dont vous utilisez ça ? Maintenant, la réalité de ceci est que vous pourriez demander, Eh bien, pourquoi cela serait-il utilisé principalement, ceci a été utilisé. Ah, cela a été utilisé avant que nous ayons des espaces de noms et il a été utilisé dans le contexte où vous ne
créiez pas un Cela prenait essentiellement du code procédural et le mettait à l'intérieur d'une classe, et vous utilisiez essentiellement la classe comme espace de nom . Et donc c'est ce que j'appellerais pseudo. Ceci a été utilisé pour un pseudo objet ou une programmation détestée dans le sens où
vous savez, vous n'étiez pas nécessairement Vous ne créiez pas une classe post très post dans une catégorie plastique, vous étiez fondamentalement juste prendre Vous ne cassiez pas tout et en fait vivre à la hauteur de l'esprit de l'objet lors de la programmation. Et je ne dis pas que je n'ai pas envie de déchirer ces gens. Je ne le suis pas. Je ne dis pas que c'est une chose horrible. Je dis juste que ce n'était généralement pas la façon dont ce genre de chose était utilisé. Ceci a été utilisé dans un contexte où vous venez d'avoir plus d'une collection de méthodes à l'intérieur de votre classe et que vous aviez une collection de propriétés et que vous les mettiez seulement à l'intérieur de la classe afin de les empêcher d'être dans l'espace de noms global et brouiller cet espace de noms
global et avoir des collisions avec d'autres variables et d'autres applications , etc. Donc, l'idée était de le mettre à l'intérieur d'une classe et utiliser la classe est une sorte d'espace de nom, mais encore être capable d'accéder directement à ces choses. Et donc, si vous sortiez ça de la classe ici, et qu'on avait juste ma fonction. On pourrait appeler ma fonction comme ça, non ? Nous n'aurions pas besoin d'en citer huit. Une nouvelle instance d'une classe et tout ce genre de choses. Donc, les mots-clés statiques vous permettent de faire quelque chose de similaire. Tu devais juste ajouter ça ma désignation de classe. Et maintenant, vous pouvez accéder directement à vos fonctions. Vous pourriez y accéder. Ah, vous savez, vous êtes très vos propriétés directement. Et si vous vouliez une référence Teoh, une propriété apparaîtra comme si nous le faisions,
faisons juste ça, allons-y. Mon var. Et c'est dans l'espace mondial des noms, non ? Il n'est pas à l'intérieur d'une classe à l'intérieur d'une fonction à l'intérieur de n'importe quel espace de nom, n'importe quelle interface, tout ce qu'il est juste dans directement en PHP. Donc, c'est l'espace de noms global. Donc maintenant on crée une fonction et on veut faire des écho, réparer dans une seconde, mon var, et on va appeler ça mon funk. D' accord. Ah, fonctionne mon funk. D' accord. Donc si on voulait aller de l'avant et faire écho, ils sont en fait ça s'appelle mon funk, hein ? D' accord. D' accord. Donc si on voulait faire ça, tu vois, on va devenir indéfinis. Variable, non définie. Variez mon var ici. Pourquoi est-ce indéfini ? Parce que c'est dans l'espace de nom global. Et c'est dans l'espace de nom local. Donc ce que vous auriez à faire ici et si vous avez pris mon PHP sur un cours, vous le saurez, mais allez global mon var. Ok, donc maintenant ce que cela dit est que je veux utiliser la version globale de mon var à l'intérieur de cette fonction . Maintenant, vous savez, nous obtenons, nous obtenons ce que
nous voulons, nous n'avons pas l'air, et nous pourrions mettre ça à ma barre égale globale. Et donc nous obtenons, en fait obtenir un peu de sortie afin que nous devions globaux comme ça. Ok, donc c'est peut-être comme ça que ton code a été écrit avant. Et vous maintenant juste qu'ils sont comme, OK, j'ai besoin de mettre cela à l'intérieur d'une classe parce que avoir mon var dans l'espace de nom global tout pourrait être nommé mon var. Je pourrais avoir une autre application et il pourrait y avoir des collisions, donc je vais juste prendre ça et le mettre dans un cours. Mais je n'essaie pas de faire tout le module Allenby séparant. Je veux juste prendre ces méthodes et le mettre dans un cours. Eh bien, c'était généralement comme ça que statique était utilisé. Parce que maintenant, vous pouvez toujours faire ceci ceci une sorte de mise en place similaire à ceci. Mais maintenant, vous avez juste à utiliser au lieu d'utiliser global et donc globalisant avec global, vous avez juste besoin de vous assurer de le référencer statiquement, et vous utilisez un mot-clé statique sur tout. Donc mots-clés statiques, ver ou utilisé lorsque vous essayez de le faire et une
façon vraiment plus non orientée objet ah , et vous vouliez juste prendre une sorte de code procédural et le mettre dans une classe. Donc les classes étaient plus habituées à l'espace des noms quand les gens faisaient ce genre de chose est le point que je veux faire. Je soulève cela parce que nous avons maintenant une hache, nom
réel, mot-clé
space pour créer un espace de nom, et donc nous n'avons plus besoin de le faire. Et quand nous parlons de programmation orientée objet, généralement lorsque vous utilisez des mots-clés statiques qui sont en dehors du contexte de l'objet,
ce n'est pas vraiment un objet lors de la programmation. Ce n'est pas que vous ne pouvez pas, c'est quelque chose que vous ne pouvez pas faire que vous pouvez certainement le faire. Mais si vous allez en quelque sorte aller la route articulée objet et briser les choses en objets et encapsuler Ah et polymorphisme et tous les mots fantaisistes là-bas que les gens utilisent. Si vous allez suivre cette route, vous n'avez vraiment pas besoin ou ne voulez pas faire ça. n'y a pas nécessairement une utilisation pour les méthodes statiques ou les propriétés à l'intérieur de cet
objet vrai ou dans le contexte. Maintenant, il y a probablement quelques mises en garde à cela, mais je dirais qu'il y a probablement moins que vous ne le pensez. Et c'est généralement une situation où, si vous voulez le faire,
soit il y a une meilleure façon de le faire. C' est orienté objet mawr ou c'est tout comme un exemple extrême sur votre problème pourrait rencontrer une fois dans votre carrière. Hum, personnellement, je n'ai pas encore trouvé une situation où j'ai absolument dû utiliser une fonction statique, variable, variable,
er statique pour quelque chose. Habituellement, je pouvais y penser d'une manière différente et trouver une meilleure façon d' accomplir ce que je voulais. Donc on le couvre parce que c'est une partie de ce que vous pouvez faire ici et ainsi de suite. Mais c'est encore une fois. C' est quelque chose que je n'appellerais pas ça une pièce d'identité obsolète. Mais c'est quelque chose qui n'est certainement pas utilisé autant, surtout avec l'introduction d'espaces de noms dans les nouvelles versions de PHP. Cela dit, c'est statique, le mot-clé statique que les propriétés statiques et la méthode statique. Alors j'espère qu'il en sortira quelque chose. Merci d'avoir regardé. On parlera à la prochaine.
7. Namespaces: Hé, John Morris. Ici, John Morris, point com
en ligne. Cette leçon. Nous allons entrer dans le nom Spaces, donc nous avons une sorte de référence un peu dans la vidéo précédente. Donc je veux en quelque sorte aller tout sur ça ici si vite. Je veux vous donner pourquoi vous pourriez vouloir utiliser un espace de nom. Donc, toute l'idée est que l'on a l'air de venir ici. Vous pouvez qu'il fonctionne avec lorsque vous assemblez quelque chose, vous pouvez travailler avec plusieurs paquets. Donc, disons, par
exemple, que vous travaillez avec ah, Facebook sdk et un STK YouTube. Et donc tu vas apporter ces deux dans ta demande. Vous allez les inclure dans vos fichiers et commencer à les utiliser. Eh bien, disons que pour une raison quelconque, les
deux avaient une classe de base de données. Eh bien, si nous n'avions pas d'espaces de noms et que nous avons juste et que ces paquets avaient cette classe nommée juste base de données comme ceci, s'ils avaient tous les deux cela, vous rencontreriez un problème où vous avez deux classes essayant de déclarer le même cela jetterait sur l'air, donc ce serait évidemment un problème et donc la façon dont les gens l'habitude de traiter cela dans le passé est qu'ils utiliseraient un nom de classe vraiment descriptif, donc ils pourraient utiliser quelque chose comme la base de données SDK YouTube comme ça, et c'est très bien. Et ça marche, mais ça peut commencer à devenir un peu encombrant. Si vous commencez à obtenir des noms de classe plus longs. Je pense que Zen Engine est le gars de l'affiche pour ce genre de chose. Si vous regardez les noms de classe et autres, ils commencent à devenir assez longs et alambiqués. Et donc l'une des choses qui a été créée pour aider à faire face à cela était un espace de noms . Donc, au lieu d'avoir à préfixer comme ça, la première chose, ce que vous pourriez faire et ça va jeter sur l'air parce que vous devez déclarer l'espace de nom en haut du fichier. Mais nous allons juste, par
exemple, nous allons faire semblant que c'est le top du dossier. Mais vous feriez quelque chose comme YouTube et puis s d k comme ça. Et ce que cela va faire est de créer un espace de nom que vous pouvez maintenant mettre toutes
vos classes à l'intérieur de et elles ne vont pas entrer en collision avec d'autres classes qui se trouvent être dans unnom
différent. classes à l'intérieur de et elles ne vont pas entrer en collision avec d'autres classes qui se trouvent être dans un L' espace. Cela crée un tout nouveau nom, l'espace. Tout ce qui est sous ce nom, Space Declaration. Donc, si nous faisons une base de données comme celle-ci, tout sur Lee existe à l'intérieur de cet espace de nom et n'est plus dans l'espace de nom global . Donc, si Facebook est venu et dit espace de nom euh, Facebook flash sdk et ils ont fait base de données de classe ces deux déclarations de la base de données de classe , même si leur même ne serait pas entrer en collision parce que celui-ci est dans cet espace de nom, et celui-ci est à l'intérieur de cet espace de nom. Donc c'est toute l'idée. Il z sorte de pré-fixation, mais le faire d'une manière plus ou moins alambiquée. Ok, alors parlons. Passons ensuite en quelque sorte à la nuance de la façon dont tout cela fonctionne. Donc, abord, j'ai pré-écrit une partie de ce code juste parce qu'il y en a une certaine quantité et donc m'a envoyé me regarder taper tout ce qui serait inutile inutilement long. J' ai donc créé deux fichiers. L' un est lib un point PHP, et l'autre est lib à point PHP. Vous voyez en haut de ces deux et encore. L' espace de nom doit être déclaré en haut du fichier. Nous avons l'application et puis nous avons slash lib un et nous avons l'application, puis slash slash Lib à ce que cela fait est de mettre chacun de ces fichiers dans leur propre espace de nom. Alors maintenant ma classe et moi pouvons en fait vous savez, vous pouvez Ah ! Ah, vous pourriez avoir le même nom de classe. Ça pourrait être mon nom de classe, mais je voudrais juste vous montrer, euh, certaines des différences ici. Donc, de toute façon, je leur ai donné des noms de classe différents et ces classes sont ce que nous avons travaillé avec. Il n'y a rien de plus ici. Donc tout ce qu'on a fait, c'est ajouter cet espace de nom en haut. Donc maintenant, cela met ceux-ci dans leur propre application d'espaces de nom séparés, barre oblique en direct. Vous voulez une application slash lib aussi. Maintenant, si nous venons ici, alors la première chose que je fais est d'exiger ces deux dossiers. Et maintenant, nous utilisons ce mot clé utiliser pour ah, référence sont Lib 1 et ma classe sont vécues deux et votre classe et vous pouvez voir ici. J' utilise le foin et ici j'utilise le haut et nous pouvons voir ici que je reçois le foin élevé comme sortie . Donc, c'est essentiellement comment vous pouvez commencer à encapsuler votre application entière dans espaces de
noms. Et puis c'est donc séparé de toutes les autres applications, et alors vous n'avez pas besoin de créer des noms de classe vraiment alambiqués. Donc, la première chose que vous faites est de mettre ce qui en haut de vos fichiers de classe réels, vous allez mettre un espace de nom et définir un espace de nom. Et puis quand vous voulez utiliser ces classes, vous avez utilisé le mot-clé use et vous référencez l'application en direct et votre pomme de classe a vécu deux et votre classe. Maintenant, il y a une autre façon que vous pouvez le faire si nous ah, aller de l'avant et commenter ceux quand vous mangez une nouvelle instance de la classe, vous pouvez également le référencer spécifiquement pour que vous puissiez faire l'application et ensuite vous pourriez en faire un vivre Juan, et alors vous pourriez faire hap slash lib liken type lib, aussi. Comme ça, vous pouvez avoir accès. Il y avait des références le concernant spécifiquement lorsque nous mangeons une instance de cette classe. Nous avons donc référencé à ceci. Vous pouvez voir que ça marche. Et pour te montrer ce qui se passe si on ne fait pas ça, vas-y et débarrasse-toi de tout ça et ne fera pas rare que tu auras un cours d'air fatal ,
ma
classe n'a pas été trouvée. Et c'est un air introuvable parce que c'est que lorsque nous créons l'espace de noms, nous le retirons de l'espace de noms global. Donc, la déclaration de classe n'existe littéralement plus dans l'espace de noms global. Et c'est pour ça que vous obtenez cet air pas trouvé. Ok, Donc encore une fois, c'est comment créer des espaces de noms et utiliser des espaces de noms, puis les utiliser à nouveau. Encapsuler votre APS maintenant, une autre chose que vous pourriez faire que je veux vous montrer que quelque peu pratique est affaiblir. Nous pouvons également utiliser ceci comme mot clé afin que nous puissions utiliser Apple Iban ma classe comme disons juste J et ah, utilisons-le comme m. Ok, donc si nous venons ici maintenant, ces airs appelés alias. Maintenant, nous avons changé comment nous pouvons référencer les choses. Donc, si nous rechargeons ceci, vous pouvez voir que je reçois ma sortie attendue et j'appelle le nouveau J. Je n'ai jamais déclaré une classe appelée J. Je n'ai jamais déclaré une classe appelée em. Mais ce que j'ai fait est que j'ai dit, utilisez cette classe comme Jay a utilisé cette classe à travers tous les espaces de noms comme M. Donc j'ai créé un alias quatre mes classes. Et maintenant, je peux appeler je peux installer huit nouveaux J M et ça marche. Ok, donc ce sont des alias que vous pouvez utiliser aussi. Donc c'est une autre chose que vous pouvez voir là-bas et que vous pourriez trouver utile aussi. Donc encore une fois, quand il s'agit de ah, comment faire, ah, organiser vos demandes et ainsi de suite, vous savez, beaucoup de fois, j'ai des gens qui sont comme, dites-moi juste comment l'organiser, et la réalité est que c'est là que vous êtes, vous savez, c'est là que vous êtes une sorte de créativité en tant que développeur entre en quelque sorte. Maintenant, je vais faire une amorce M M V c à la fin de ce cours, et je vais en faire une partie. Nous allons jeter un oeil à certains paquets existants qui sont là-bas. Donc, vous pouvez avoir une idée de la façon dont ils sont organisés, mais il y a toutes sortes de modèles de conception qui sont là dehors. NBC n'est pas le seul, et à la fin de la journée, c'est votre application, sorte que vous pouvez en quelque sorte l'organiser,
comment vous voulez à nouveau. Il y a des pratiques exemplaires et des conventions et des façons dont les gens l'ont fait par le passé. Mais une partie de ce que vous faites est les développeurs d'être créatifs, résoudre les problèmes de manière unique, de
trouver vos propres idées et ainsi de suite. Et donc n'ayez pas peur d'expérimenter avec ça. Évidemment, jetez un oeil à d'autres paquets si vous voulez des conseils. Mais j'espère que maintenant, sachant cela, vous saurez ce que vous regardez. Et je pense que c'est la chose la plus importante. Lorsque vous allez dans ces autres paquets et que vous voyez certains de ces trucs et que vous ne savez pas ce que c'est, cela peut devenir vraiment déroutant très rapidement. Mais j'espère que maintenant, sachant comment les espaces de noms fonctionnent et ainsi de suite, vous pouvez y aller et y aller, Oh, je sais ce que c'est, et vous pouvez commencer à rassembler comment ils mettent les choses. Comment leur ah, l'organisation et ainsi de suite, et qui peut vous donner des idées. Donc c'est mon but. 40 en tout cas. Encore une fois, c'est le nom Espaces. Espérons. Ah, tu as quelque chose de ça. Merci d'avoir regardé. On parlera à la prochaine.
8. Autoload: Hé, là. John Morrissey, John Morris en ligne dot com. Cette leçon. On va se mettre au chargement automatique maintenant. Le chargement automatique n'est pas nécessairement un objet strictement lors d'une programmation. Mais comme nous commençons à parler de la construction de classes et nous commençons à utiliser des espaces de
noms et ainsi de suite Ah, je pense qu'il devient important de parler de chargement automatique. Et la raison pour laquelle nous sommes concentrés sur ces deux lignes ici. Et vous avez peut-être travaillé avec des applications assez pour le code pour savoir qu'après un certain temps, vous commencez à traiter beaucoup de ceux-ci. Et je vous sais, je fais des tutoriels où je parle de ah, en utilisant ah, fichier de
chargement et ce genre d'une façon de traiter cela et cela fonctionne bien, quand vous travaillez avec quelque chose qui est plus sorte de, Euh, sur un certain nombre de gens vont crier Blast pour moi ici. Mais quand vous travaillez avec quelque chose de plus avant et lourd Donc où ah beaucoup de votre code si nous devions parler de cela comme, disons, M v c sage est beaucoup de votre vue codas lourd, et ce n'est pas nécessairement autant des trucs à l'arrière. Alors que, ah, ce dont nous allons parler avec la charge automatique a tendance à fonctionner beaucoup mieux quand vous avez beaucoup de retour dans comme si vous avez un tas de classes différentes dont vous avez besoin pour charger un tas d' espaces
de noms différents et vous avez une tonne de choses qui se passent. Et donc l'idée de chargement automatique est de nous aider à nous débarrasser d'avoir à utiliser ces exigences
et en avoir, comme, 15 d'entre eux. Si nous avons encore autant de classes, cela commence vraiment à devenir, ah, un problème lorsque vous avez quand vous cassez des objets individuels. Ah, le code de gestion d'
objet dans les classes. Et puis, si vous encore, nous commençons à parler de NBC. Vous commencez à parler de plusieurs classes pour un objet parce que vous avez, vous savez, des
vues et vous avez le modèle et vous avez le contrôleur et tout ce genre de choses. Donc, vous commencez à obtenir beaucoup de classes et beaucoup de fichiers que vous devez charger. Donc, avoir à constamment tomber dans toutes ces déclarations de besoin peut être lourd. Donc c'est ce qu'on va montrer comment gérer ici ? Ah, j'ai créé un nouveau fichier. Va juste copier tout ce code va laisser tomber cela dans. Et bien sûr, comme vous vous y attendiez si je me débarrassais de ces besoins, nous allons avoir ces airs. Maintenant, je veux que vous fassiez attention à cet air parce que ah, ce que PHP essaie de faire est ah, quand nous allons faire le chargement automatique, il est basé sur ceci est le nom de la classe . Ok, c'est quelque chose. Je veux que vous fassiez vraiment attention à son application slash lib une slash ma classe. C' est le nom réel de la classe. Donc, quand nous entrons en vous avez peut-être vu ah ah fonction appelée SPL auto load registre
viendra ici pour vous inscrire. Donc SPL Lotto chargement automatique enregistré prend une fonction de rappel. Donc, nous allons juste dire pour notre bien ici que nous allons partir. Chargement automatique. Ok pour que ça reste simple. Hum, maintenant cette fonction va être un peu dans ce ah ah ah. Souvent dans cet espace de nom global comme celui-ci. Donc ah, euh, l'utilisation de la charge automatique comme ça n'est peut-être pas la meilleure chose à faire. Vous voudrez peut-être penser à un autre nom ici, mais pour nos besoins, je peux juste vous montrer cette année. Et ce que je faisais là, c'est que j'ai l'habitude de faire ça. Ce n'est pas un kyste sur une nouvelle fonction que nous créons. Ce que nous faisons, c'est qu'une fonction PHP appelait, et nous passons un nom d'une fonction que nous voulons utiliser est un rappel. Donc, le registre de chargement automatique SPL va juste appeler cette fonction de rappel. Donc, nous allons créer une fonction appelée Auto Load et beaucoup de frameworks. Vous verrez qu'ils mettent ça dans, c'est un peu propre fichier séparé et ainsi de suite. Ah, et donc vous savez, la façon dont je fais ici juste le haut d'un fichier comme celui-ci n'est pas nécessairement la façon dont vous feriez ça. Vous mettrez normalement ceci en sorte de son propre fichier, puis inclus dans un type de
vos fichiers de base pour commencer par ou ah, d'une manière ou d'
une autre inclus dans votre application. Donc ah, mais encore une fois, je te le montre d'une manière simple ici. Donc encore une fois, SPL beaucoup de registre de chargement automatique va exécuter le chargement automatique de rappel. Et ce qu'il passe, c'est le nom de la classe. C' est pourquoi c'est important parce que ça va passer en classe. Rappelez-vous que le nom de la classe est ce nom complet ici. Et il a les barres obliques arrière comme ça, pas les barres obliques avant. Donc, si on essayait de quoi ? Ce que vous devriez probablement essayer de faire tout de suite est juste de faire quelque chose comme exiger une fois . Et puis, euh classe, nom Dieu, PHP. Quelque chose comme ça. C' est une chose assez standard que je pense que beaucoup de gens diraient juste, Hey, vous savez, nous allons mettre et puis vous créeriez des fichiers comme cette application Lib Juan a vécu comme je l'ai fait ici. Donc nous avons une application libérale dans les deux, et vous diriez, OK, je suis bon d'y aller, mais peut-être que vous ne penserez même pas à créer ces fichiers comme ça, est-ce pas ? Peut-être que c'est, tu sais, peut-être que c'est le truc. Donc, ce que vous remarquerez, c'est que cela dit qu'il ne l'ouvrira pas, et la raison pour laquelle il ne s'ouvrira pas est à cause de ça. Slash est juste là. Donc nous devons nous assurer que nous allons faire le remplacement de chaîne, et nous devons changer. Il faut que Teoh les transforme en un bon genre de slashes. Donc, nous allons essentiellement faire ce que nous allons chercher, c'est que nous allons chercher ces barres obliques. Maintenant, le truc à ce sujet est, si vous faites juste ça, vous remarquerez que ça rend notre code tout bizarre. Et c'est parce qu'une barre oblique inverse est également dans le caractère échappant. Donc c'est en fait échapper à cette dernière citation juste ici. Eso nous avons besoin de mettre deux là-dedans comme ça pour s'assurer que nous n'avons pas le problème d'
échappement, et ensuite nous allons le remplacer par une barre oblique réelle, qui est ce dont nous avons besoin. Ok, donc si nous rechargeons que maintenant nous obtenons sont attendus sortie, ok ? Et donc ce qui se passe ici, c'est quand on dit, Hey, on veut utiliser Apple Liberal dans ma classe. Qu' est-ce que PHP fait ? C' est ça ? Il les cherche. Il recherche cette désignation dans les fichiers qu'il a à sa disposition qui ont été chargés. Eh bien, évidemment, si on n'en a pas besoin, ça ne va pas les trouver parce qu'on n'a pas besoin ces fichiers. Donc, ce qu'
il fait, il fait une dernière tentative, essentiellement pour trouver ces fichiers, et il va essayer de les charger automatiquement. Et donc c'est là que nous pouvons ajouter dans ce chargement automatique SPL automatique, enregistré cette fonction de rappel pour lui dire de lui donner de l'aide et lui dire où chercher. Et donc nous le disons essentiellement, parce que le nom des classes abat libéral et coupe ma classe ce que nous faisons avec
ça . Mais cette fonction ici, disaient les chargeurs
automatiques, était la première désactivée pour changer les barres obliques arrière en barres obliques avant. Et maintenant nous le disons, Hey, cherchez cette classe dans l'application slash lib one slash mon point de classe PHP et regardez ou cherchez dans lib. Ah, ap a vécu à ah, votre point de classe PHP C'est là que nous voulons que vous cherchiez ça. Donc on lui dit où regarder avec ça maintenant, c'est important, parce
que d'accord, peut-être que tu ne veux pas. Vous ne voulez pas utiliser l'application et en vivre une comme celle-ci. Peut-être que tu veux faire quelque chose comme allons-y. Ah, allons faire exploser des parties égales et on va refaire nos dosserets parce qu'on a besoin d' exploser par ces barres obliques, et on va utiliser le nom de classe. Et nous savons à la suite de cela que le dernier élément nous savons ce que nous recherchons. Maintenant, c'est un peu délicat parce que vous supposez qu'ils ont tous la même structure. Et vous avez peut-être des désignations comme ça qui sont comme, hum pas d'autre dicton, je ne sais pas ce que ça pourrait être. Vous en avez peut-être quatre comme ça. Ok, donc tu dois être un peu prudent, mais tu peux utiliser
quelque chose comme,
ah , , Ray Pop. Je crois que c'est ce qui va apparaître le dernier élément d'un tableau. Donc ah, et il va retourner que la dernière valeur du tableau comme il est renvoyé paramètre afin que nous
puissions faire ah nommé le nom direct réel égal, Ah, tableau, top et parts. Ok, faisons juste, ah, écho ça et assurez-vous que nous obtenons ce que nous cherchons. Bon, alors allons-y et faisons-le. Alors maintenant, on a mon cours. Donc, c'est l'un de ceux qui étaient après si à nouveau pour chacun de ceux-ci qu'il essaie de charger. Il va lancer ça parce qu'il ne le trouve pas. Donc, il va l'exécuter pour celui-là et ensuite l'exécuter pour celui-là. Maintenant, nous avons ma classe encapsulée. Et même si on en a fait d'autres ici comme ça, on va toujours avoir mon cours parce qu'on utilise un ray pop. Donc maintenant que nous avons le nom de classe direct, nous pourrions créer un dossier comme celui-ci C'est,
Ah, Ah, nouveau dossier et nous pourrions faire des classes. Et nous pourrions mettre toutes nos classes ici, et ensuite nous pourrions construire ceci pour qu'il le cherche à l'intérieur de ça pour que nous puissions le faire, hum nous devinons ceci et nous pourrions peut-être faire quelque chose comme, hum, faisons un sprint f rendre un peu plus facile ici. font sprint f. Et le format va être Ah, nous allons le chercher dans les classes, puis slash, puis pourcentage s, puis point PHP. Ok, ça devrait marcher. Et donc nous allons faire le nom mettra le nom dans leur. Alors, qu'est-ce que la moitié du sprint ? Est-ce que c'était ce pourcentage s ça va prendre la valeur du nom et le déposer dans leur Ok , donc c'est juste une façon un peu plus propre de faire ça. J' ai peut-être besoin d'ajouter des barres obliques et des trucs ici, mais voyons ce que nous obtenons. Euh, non, j'ai mon écho et je sors encore ici. Je veux dire, il peut avoir besoin d'ajouter des barres obliques, mais allons juste voir. Oui,
alors, eh bien, eh bien, et en fait, on n'a pas ma classe là-bas, alors faisons-le. Faisons Ah, copie. Et puis nous allons coller ça ici et ensuite faisons votre cours. Copions ça et collons et j'arriverai au point tout cela ici en une seconde. Très bien, donc là, maintenant on y va. On l'a bien. Donc on l'a fait. Nous venons de faire deux façons différentes de chargement automatique. Nous l'avons fait où nous avons créé une application et vécu une comme
celle-ci, ce que vous pourriez voir certaines personnes faire, ou nous l'avons fait où nous avons mis toutes nos classes dans un seul dossier et peu importe où ils savent où ils vont être appelés de, Peu importe que vous sachiez combien de niveaux différents nous avons ici. En fin de compte, cette fonction de chargement automatique va chercher nos classes à l'intérieur de cette classe est dossier, et s'il y en a un, il va le charger. Ok, donc je vous montre tout ça pour souligner que quand vous allez voir différentes applications, vous allez voir différentes façons que les gens peuvent charger automatiquement des choses. Et vous pourriez commencer à penser que c'est la seule façon de le faire ou quoi que ce soit. Mais cette charge automatique Ah, fonction. Ce registre vous permet d'appeler une fonction de rappel, vous
donne le nom de la classe, puis vous pouvez l'analyser et le gérer comme vous le souhaitez. Et cela vous permet de construire votre structure d'une manière spécifique. C' est logique pour vous. Donc, vous pouvez organiser votre père votre application comme vous le voulez. Et ce qui est bien, c'est qu'on pourrait avoir c'est qu'on pourrait avoir
17 de ces utilisations. Ah, ces désignations utilisent ici, et nous pourrions avoir 17 classes différentes. Et tant que votre façon d'écrire le chargement automatique, vous vous assurez d'organiser vos fichiers de cette manière particulière pour que cela fonctionne, alors vous allez très bien. Et encore une fois, ça va être un peu quand nous entrerons dans Ah, quand nous commencerons à regarder NBC et nous allons regarder certains de ces trucs, vous verrez des fonctions de chargement automatique qui ont beaucoup de Ils ont des blocs si ils sont beaucoup plus compliqués que ça. Et c'est très bien. Et cela fonctionne en fait assez bien dans ces scénarios et ainsi de suite. Mais je veux vous montrer cela pour que vous ayez une compréhension de base de ce
qui se passe réellement là-bas et pour vous faire savoir que vous pouvez écrire votre chargement automatique comme vous souhaitez. Et c'est un outil très pratique pour quand vous avez beaucoup de classes que vous devez charger au lieu de mettre 17 blocs requièrent en haut, vous pouvez utiliser une charge automatique comme celle-ci, et vous pouvez utiliser des instructions if ici et ainsi de suite. Et peut-être que tu le ferais. La façon dont vous l'organisez est que vous vérifieriez. Tu fais exploser. Mais vous en retireriez le premier élément, n' est-ce
pas ? Vous attraperiez cette partie de l'application, et vous diriez ,
OK, si son application je vais chercher, je veux que vous le cherchiez dans ce dossier, et vous pourriez avoir une instruction if qui gère si le If le premier élément de cette est une application et disons, peut-être que c'est je ne sais pas,
peut-être que vous avez, ah, YouTube, YouTube, STK ou quelque chose et que vous voulez utiliser YouTube ou vous avez un rappeur YouTube. Et si c'est YouTube, je vais chercher ailleurs. Ou si c'est le cas, il y a toutes sortes de façons différentes d'organiser ça. Mais encore une fois, je veux que vous sachiez que vous pouvez écrire cette fonction comme vous voulez afin que vous puissiez organiser votre application, votre application,
comment vous voulez et toujours pouvoir en profiter. Donc, c'est le chargement automatique. Espérons qu'il en sortira quelque chose. Merci d'avoir regardé. On te parlera la prochaine fois.
9. Interfaces: Hey là, John Morris Ici, Joe Morris en ligne dot com. Cette leçon. Nous allons parler des interfaces, donc les interfaces sont une façon dont elles font, c'est qu'elles vous permettent de spécifier le type du framework qu'une classe doit implémenter en particulier, ce qu'elle fait c'est qu'elle vous indique les méthodes qu'une classe a orteil ont si elle va mettre en œuvre. Ah, votre interface. Et c'est pratique pour un certain nombre de situations. Par exemple, disons que vous voulez juste être vous en tant que codeur individuel écrire des choses. Vous voulez être plus organisé et vous garder sur la bonne voie et ainsi de suite. Et donc ce que vous pouvez faire, c'est quand vous l'êtes, vous construisez une sorte d'idée de ce que vous voulez que votre application soit et obtenez une sorte de base sorte d'idées et de concepts vers le bas et la fonctionnalité vers le bas. Vous pouvez créer différentes interfaces qui disent Ok, je sais que cette interface a besoin de ce que les Siris des classes vont avoir besoin de faire une sorte de manipulation de données, donc ils vont stocker des choses dans la base de données travailler avec la base de données, donc je sais que je vais avoir besoin d'un créer une lecture et une mise à jour et supprimer afin que vous puissiez écrire une interface qui dit, Ok, je dois. Pour chacune des classes qui implémente cette interface, ils doivent s'assurer au minimum
qu'ils ont un crie crie lu, mis à jour et supprimé. Et alors quand vous écrivez la classe et que vous implémentez l'interface, si vous n'avez pas ces méthodes là-dedans, alors il va lancer un air et vous serez comme, Oh, oui, je dois le faire donc c'est une instance probablement une instance plus populaire ou réaliste est Disons que vous êtes le développeur senior dans une sorte d'organisation et que vous êtes chargé vous et vos développeurs juniors. Peut-être que tu en as cinq ou dix. Vous êtes chargé de créer une sorte de nouvelle application. Et donc, en tant que développeur senior, vous voulez fournir une sorte de rails de guidage pour vos développeurs et assurez-vous que leur ah, ils écrivent les choses nécessaires dont vous avez besoin pour l'application afin que vous puissiez vous asseoir et écrire une série d'interfaces et exposer le cadre de base de ce que le code doit faire sans avoir à remplir et écrire le code. Et puis vos développeurs juniors ont besoin de le faire. Quand ils écrivent un type particulier de classe, ils doivent s'assurer qu'ils implémentent un certain type d'interface Ah, afin que cela fonctionne. Et cela vous donne un scénario où, tant que développeur senior du chef de projet, vous pouvez en quelque sorte guider le développement et mettre en place un cadre pour le développement, mais pas réellement avoir à écrire le code individuel pour chaque classe. Et c'est donc ce qu'une interface fait. Donc, pour créer une interface, vous venez d'utiliser l'interface de mot clé au lieu de la classe de mot clé. Et puis vous donnez un nom à votre interface. Vous avez vos supports bouclés qu'il est à l'intérieur de puis à l'intérieur de celui-ci. Tout ce que vous faites est de spécifier les méthodes que cette interface doit contenir, donc nous pouvons voir que nous faisons fonction publique, et ensuite nous avons un nom faire chose, et nous avons une fonction publique et un nommé faire autre chose. Vous ne mettez aucune donnée à l'intérieur de la méthode. Il ne vous laissera pas vous obtiendrez les leurs si vous essayez de mettre des données à l'intérieur de ces méthodes toute l'année, en spécifiant est les noms des méthodes qui doivent exister dans n'importe quelle classe les implements, cette interface et donc vous pouvez voir ici que nous Lorsque nous voulons implémenter l'interface , nous disons classe ma classe au lieu de étend. Lorsque nous utilisions un parent et des classes enfant, nous faisons des impléments. Et puis nous disons mon interface quand nous faisons cela,
ce que cela dit est maintenant que nous devons nous assurer que dans cette classe nous avons une méthode appelée faire chose et appelée Faire autre chose. Et donc si nous actualisons ceci, vous voyez que nous n'avons pas de sortie ici parce que ma sortie, importe quoi. Mais si je viens ici et que je commente ces deux dernières méthodes,
alors maintenant je fais quelque chose, mais je n'ai pas fait d'autres choses, et donc si nous revenons ici,
j'aurai un cours d'air fatal. Ma classe contient une méthode abstraite et doit donc être déclarée abstraite ou implémenter les méthodes restantes, puis elle vous indique la méthode qu'elle doit implémenter. Donc encore une fois, si vous êtes dans une organisation et que vous êtes le développeur senior et que vous avez un tas de développeurs travaillant pour vous et que vous dites que vous allez à eux et que vous dites, OK, j'ai implémenté toutes les interfaces. Voici les interfaces que vous devez utiliser pour ceci et ceci. Et ils disent et ils vont à leur code là-bas. La classe de gars implémente mon interface et ensuite ils écrivent, ils essaient de charger la page, vous verrez. Oh, vous devez implémenter celui-ci, vous avez besoin d'implémenter celui-ci, vous avez besoin d'implémenter celui-ci comme ils ont ah, rail de
guidage de Ce sont les choses que j'ai besoin de compléter. Et alors ils peuvent passer à travers et les compléter. Et quand ils vont vous montrer leur code en tant que développeur senior, s'ils ne l'ont pas ordonné, ah a créé l'une des méthodes requises. Tu vas le voir sur le bon pied. Tu vas le voir. Vous pouvez essayer de le charger, et cela va dire, Hey, cette méthode n'existe pas encore et vous donne un certain contrôle et quelques conseils en termes
de cadre général de ce que vous construisez. Maintenant, si nous venons ici, bien
sûr Willen commente celui-ci et vous pouvez voir maintenant nous n'obtenons aucune sortie parce que nous avons les deux méthodes définies. L' autre chose est, ce n'est pas seulement ces deux méthodes que vous devez implémenter, ou vous devez créer le à toutes les méthodes qui sont spécifiées dans le dans votre visage, mais vous pouvez y ajouter vos propres méthodes. Donc maintenant, nous avons une méthode 1/3 ici qui n'a pas été décrite dans l'interface. Mais vous pouvez voir que nous n'avons toujours pas d'erreurs ou tout simplement très bien avec ce genre de choses. Donc encore une fois, ceci est la création d'une interface qui vous permet d'obtenir un certain contrôle sur une structure les classes que vous créez. Um, et ça peut être utilisé de différentes façons, que ce
soit vous personnellement ou en équipe, etc. donc ce que sont les interfaces. C' est ce que donc Ah, ça va le faire pour cette leçon. Merci d'avoir regardé. Nous prendrons la prochaine fois
10. Primer MVC: Hé, là. John Morrissey, John Morris en ligne dot com. Cette leçon, ça va être une introduction sur MV . Maintenant, je veux m'assurer que je suis clair sur ce que je veux dire par Primer et ce que nous allons parler ici. Donc, amorce est conçu pour être une sorte de vue d'ensemble de haut niveau des concepts. Donc, nous n'allons pas entrer dans l'écriture de code avec ça. Pas pas Ah, tu sais, aller dans notre éditeur et poser toutes ces choses ça va être une vue d'ensemble des concepts. Et j'ai inclus cela même si ce n'est pas vraiment nécessaire. Ce n'est pas vraiment une programmation orientée objet à 100%. Je pense, ah, que beaucoup de gens, quand ils pensent à la programmation orientée objet, finissent par pousser vers une sorte de modèle de conception parce qu'en fin de compte l'objet ou toute programmation est sur la construction d'applications. Et donc NBC est un modèle de conception très populaire, mais ce n'est pas le seul modèle de conception. Ah, c'est là-bas. Et vraiment, si vous voulez apprendre NBC en profondeur comme ça, c'est votre modèle de conception que vous voudriez envisager de suivre un
cours spécifique à M V C parce qu'il est assez grand d'un sujet qu'il justifie son propre genre. Bien sûr. Je veux donc vous donner une amorce dans un aperçu des concepts de haut niveau afin que vous
compreniez M. V c et que vous compreniez qu'il est l'un des nombreux modèles de conception qui sont
là-bas . Mais c'est aussi très populaire, et nous pouvons donc parler de certaines des choses qui se passent avec elle. L' autre chose, genre de tombe ou de mise en garde. Un. Je vais faire référence à cet article ici sur le point du site et je voulais vraiment faire venir ici et vous montrer ça parce que A et moi allons lier à, ah, cet article, euh, partout où je peux dans les termes de l'endroit où vous visionnez ce cours. Mais je vais lier à cet article afin que vous puissiez le voir. Mais il y a deux choses à propos de cet article que je voulais vraiment utiliser. Ah, j'aime vraiment cette photo ici, et je ne voulais pas simplement faire glisser la photo, donc je voulais te montrer où je l'ai vraiment eu. de. On va en parler pendant qu'on va traverser ça. L' autre chose, c'est ça. Cet article fait un argument avec lequel je suis d'accord quand il s'agit de NBC. Et l'argument est que beaucoup des frameworks que vous allez voir aujourd'hui si vous sortez et que vous regardez, ah, les différents frameworks ou personnes qui utilisent le modèle NBC aujourd'hui, beaucoup de ce que vous allez find est une sorte d'une autre utilisation de ce que NBC est réellement . Et comme cet article fait le point vers, ce n'est pas vraiment vrai. M. V C. Et nous allons parler spécifiquement de la raison pour laquelle cette ISS et ainsi et cela ne fait pas mal. Ah, ce qui s'est passé, c'est que les gens ont développé leur propre modèle de conception. Mais il est important de comprendre que ce que vous voyez là-bas à partir de beaucoup de frameworks, est
vraiment un modèle de conception différent qui implémente des idées similaires mais d'une manière différente. Et donc si nous voulons vraiment parler de pure sorte de vrai M v C, je veux m'assurer que vous comprenez ce que c'est. ne veut pas dire que vous ne pouvez pas faire ce que ces autres cadres air faire, et ensuite vous devez le faire de cette façon ou c'est mieux. C' est à l'autre. Je veux juste souligner qu'il y a une distinction entre les deux, donc vous savez ce que c'est ? D' accord. Alors quoi ? Cela dit, entrons dans ce que c'est un peu. Donc NBC signifie contrôleur de vue modèle. L' idée est de séparer la logique métier et la sorte de gestion des données et, comme le back-end genre de choses avec une sorte de front et d'affichage genre de choses. Et si vous avez déjà construit n'importe quelle sorte d'application, vous savez qu'il y en a. Il peut y avoir ce genre de confusion entre les deux, et il n'y a qu'un point dans l'application. Si vous ne faites pas ce genre de cadre NBC ou une sorte de conception plus gros et conçu
pour gérer cela toujours un point dans l'application où vous vous sentez comme une partie de celui-ci est un peu sale. Et c'est comme si c'était un peu Ah, pirater et ça ne se sentait pas super propre. Et donc ce que NBC fait est qu'il a aidé à résoudre ce genre de choses en vous donnant une sorte de principes et de règles que vous pouvez suivre pour aider à garder vos applications vraiment propres, vraiment modulaires et ainsi de suite. Alors quoi encore, quoi ? NBC signifie son contrôleur de vue modèle. Donc ces trois composants diffusent et vous verrez comme nous, euh, sur notre photo ici. Tout cela est lié à cette idée implicite de l'utilisateur. Donc, je parle parfois de cet utilisateur implicite. Ah, c'est Il est toujours supposé qu'il y a un type d'utilisateur en arrière-plan utilisant notre application. Et donc le contrôleur, finalement Ah, en fait, c'est probablement mieux que nous commencions à parler du modèle d'abord. Le modèle est donc ce que nous utilisons pour notre type de stockage à long terme des données. Donc, ce modèle est finalement aveugle. Il n'a aucune connexion ou a une idée de ce qui se passe avec la vue ou le contrôleur autre que ce qui est demandé de lui ? Et ce que je veux dire par ce qui est demandé est que le contrôleur, Comme vous le voyez ici, le contrôleur interagira avec le modèle et mettra à jour les données qui se trouvent dans le modèle, et la vue interagira avec le modèle afin de de poser des questions afin obtenir les données dont il a besoin pour afficher ce dont il a besoin pour afficher à l'utilisateur l' interface qu'il a besoin d'afficher pour l'utilisateur. Mais le modèle n'a vraiment aucune idée de cela. Il ne sait pas pourquoi les données doivent être utilisées. Il ne sait pas pourquoi il a besoin d'être mis à jour. Tout ce qu'il sait, c'est qu'on m'a dit de mettre à jour ces données ou qu'on m'a dit de les récupérer et de les retourner. Et donc il répond simplement aux demandes du contrôleur et de la vue. Et c'est important à comprendre en termes de séparation de ce qui se passe entre le contrôleur et la vue et de tout ce qui se passe avec le modèle. Le modèle va finalement tourner autour de votre type de fonction de base de données, donc ce sera la chose qui se passe. Ça va être ta foule va insérer des données dans une table particulière. Si on lui dit de le faire, ça va mettre à jour ces données. S' il est dit qu'il va le récupérer et le retourner à ah vue s'il est dit de le faire , ça va être, ah à nouveau supprimer ces données. Si on lui dit de le faire. Il ne fait que réagir à ce qu'on lui dit de faire, et il est complètement aveugle et il se concentre uniquement sur le stockage à long terme des données. Ok, alors chose quand on pense modèle, ce n'est pas 100%. Mais pensez à la base de données. Quand vous pensez à cela, alors c'est quand nous entrons dans cette distinction entre la vue et le contrôleur. Maintenant, vous remarquerez ici qu'il n'y a pas de flèches qui vont entre la vue
et le contrôleur, et c'est là que nous entrons dans cette distinction entre ce que vous verrez des frameworks qui sont là-bas et une sorte de vrai M v C. Dans le vrai M V C. n'y a pas d'interaction entre l'interaction directe entre le contrôleur et la vue. La seule façon dont ils interagissent indirectement les uns avec les autres est à travers le modèle. Et ce que je veux dire par là, c'est que si le contrôleur met à jour certaines données dans le modèle, bien sûr, cela va finalement affecter la vue. Mais le contrôleur ne dit rien à la vue directement, et la vue ne dit rien au contrôleur directement là complètement séparé. Maintenant que pourquoi c'est différent des cadres modernes est beaucoup des cadres modernes . Ce que vous verrez, c'est que le contrôleur se trouve en quelque sorte au-dessus de la vue et du modèle. Donc, beaucoup de fois, ce qui se passera est que le contrôleur contrôlera quelles vues sont affichées. Et il suffit de tirer des modèles de la vue afin d'avoir l'affichage approprié. Et ce n'est pas vraiment vrai. M v c. Dans vrai NBC, les vues sont plus que de simples modèles. Les points de vue interagissent et parlent aux données, et ils contrôlent cela, toute
cette partie de celui-ci. Donc, pour obtenir vraiment précis sur la façon dont cela fonctionne, disons que vous allez à une sorte de page Web, et quand vous allez à votre disons juste indexée, je pourrais être n'importe quel domaine Lissy Index, arrêter PHP Quand cette page se charge, il y a un certain nombre de choses qui doivent se produire dans n'importe quel type d'application. abord, l'application doit savoir sur quelle page vous êtes. Êtes-vous sur l'index point PHP ? Vous savez, si vous êtes dans un CMS, vous pourriez être un point d'index PHP. Mais alors un paramètre de requête de P est égal à neuf. Eh bien, ça veut dire qu'on demande le poste qui a une idée du numéro neuf. C' est différent d'être sur la page d'accueil réelle. Donc, vous devez savoir où le contexte de où vous êtes à la suite de où vous êtes , vous devez savoir. Peut-être que j'ai besoin de vérifier ah, voir s'il y a des variables de session pour voir si cette personne s'est connectée. Ou peut-être que j'ai besoin d'avoir ah, paramètre de
requête qui a spécifié qui m'oblige à interroger, interroger certaines informations et afficher les choses différemment. Donc, si vous êtes sur l'index point PHP connaîtrait le paramètre de requête, je pourrais tirer le modèle home dot PHP Et je pourrais dire les données ou dire au modèle Hey, j'ai besoin de tous les messages. Ok, j'ai besoin ou j'ai besoin du dernier 10 post parce que je suis un affichage 10 à l'époque. Donc, il va interroger le modèle et dire, j'ai besoin des 10 derniers messages. Il va attraper. Ok, j'ai besoin de la vue de la page d'accueil, et il prendra les données et il les mettra dans la vue. Et c'est ce qui conduit finalement à l'affichage de la page. Ok, c'est tout le travail de vue. La vue est censée gérer tout cela. Déterminez le contexte. Trouve ce dont papa, j'ai besoin pour comprendre de quel point de vue j'ai besoin. Donc, je sais ce que j'ai besoin d'afficher à l'utilisateur que tout est le côté de la vue des choses. Le côté contrôleur des choses prend le dessus quand une sorte d'interaction existe entre l'utilisateur et notre application. Alors disons que vous êtes à nouveau. Vous êtes sur une page de publication individuelle et sur une page de post blawg individuelle, il peut y avoir une boîte de commentaire, donc il y a une petite zone de texte avec le bouton Envoyer. Dès que soumettre, bouton est cliqué et nous allons juste pour une seconde oublier Oubliez Ajax et JavaScript tout cela pendant une seconde. Imaginons juste la période PHP et rien d'autre Dès que ce bouton est cliqué. Nous avons maintenant eu une interaction entre l'utilisateur et notre application, et nous devons gérer cela. Et donc nous avons besoin d'un moyen de savoir. Eh bien, quelles données ont été soumises, quel était le contexte et quel était le contexte ? Quelques-uns. Je veux dire, ça aurait pu être un commentaire, mais ça aurait aussi pu être l'administrateur à l'arrière et créer un nouveau post comme quel est le contexte de ces données afin que je puisse comprendre ce que je dois faire avec. C' est ce que fait le contrôleur. Le contrôleur a compris
, compris. Ok, Ces données ont été soumises à partir d'une page de poste de tourbière individuelle. Il s'agissait d'un commentaire et d'un commentaire sur ce poste particulier. C' était un commentaire de cette personne. Voici ce que le commentaire était. C' est la date que vous connaissez, elle détermine tout le contexte d'où vient cette interaction utilisateur. Et il faut cette interaction et il la traite. Et puis il se met à jour. Demotte dit le modèle Quelle mise à jour orteil ? En conséquence. Donc ça dit au modèle, en
gros, Hey, Hey, on vient d'avoir un commentaire dont j'ai besoin. Et c'était sur ce poste. J' ai besoin que vous ajoutiez un nouvel enregistrement à votre base de données à votre table de commentaires. Et voici les données de Ford. C' est le poste qui était de This is qui est de etcetera. Le modèle va bien. Qui a fini avec des dates ? C' est ça. Il fait juste ce qu'on lui a dit de faire. Donc maintenant cela peut être un peu boueux parce que vous pouvez commencer à penser Ok, la vue et le contrôleur connecté parce que si vous êtes sur la page et il y a un
bouton de formulaire là-dessus. C' est une sorte de vue, mais c'est aussi des données soumises par l'utilisateur, mais c'est donc une sorte de contrôleur, donc ils sont un peu mélangés. Mais la façon de faire la distinction claire à ce sujet est la suivante. La vue est responsable de l'affichage du bouton et de l'affichage du formulaire et du
paramètre d'action dans le formulaire pour dire où il est. Ces données sont censées être traitées à la vue est responsable de l'affichage. Une fois que le bouton est appuyé, cependant, la vue n'a rien à voir avec la façon dont les données elles-mêmes sont traitées. C' est tout le contrôleur. Ok, donc le contrôleur prend le relais à cette partie, et ensuite il mettra à jour le modèle. Et puis, bien
sûr, à la suite de cela, alors la vue sera modifiée en raison des données ont été modifiées. Encore une fois, Teoh passe par le processus. Quand une page se charge, disons, une page de publication de bloc individuelle. C' est la responsabilité de regarder l'U. R L et de dire, Ooh, on a P égale 9. Ok,
ça veut dire que c'est le poste I doyen, c'est un poste son i. D 9. Et donc je dois récupérer les données pour ce post de la base de données. J' ai besoin de ma vue de poste unique parce que c'est une seule page de publication, et je vais insérer ou injecter ces données dans ce modèle et boom. C' est ce que je vais afficher qui inclut un formulaire de commentaire. Donc, c'est toute la vue et dans ce processus, la vue peut aller et arrière avec le look du modèle et dire, Hey, j'ai un post avec l'idée de neuf. Est-ce que cela existe ? Et le modèle peut dire non, ça n'existe pas. Et vous pouvez aller Hope n'existe pas. Cela signifie que j'ai besoin de mon modèle pour mon 404 Boom. Je l'affiche ou il peut dire, Hey, est-ce que cette idée de post de neuf existe et le modèle dit, Ouais, qui existe. Et puis tu pourras y aller. Envoyez-moi les données pour ça. Et maintenant, la vue peut aller. Ok, j'ai des données pour cela et comment j'ai besoin de mon modèle unique. Ah, dossier. Vous y allez. Voici ce qu'il vous faut. C' est l'interaction entre la vue et le modèle. Ok, Maintenant, une fois que cette page est affichée et inclut le formulaire que l'ancien contrôleur soumis prend charge. Le contrôleur, vous savez, dit à la base de données, Hey, j'ai un commentaire pour le Post I D 9. Ce post I d neuf existe. Le mannequin dit oui,
ça existe, dit-il. OK, ajoutez ce commentaire à l'annonce. Ces données à la sont à un nouvel enregistrement de la table de commentaires référençant et il fait référence. Ah, la données du
poste I D numéro 9 va bien. À ce stade, la base de données indiquera au contrôleur si cela a été réussi ou non. Il dira qu'il le dira au contrôleur. Hey, que ce commentaire vous sur moi et insérer, C'est bon d'y aller. Tout inséré et contrôleur va chercher cela maintenant si le si le modèle dit retour
au contrôleur. J' ai essayé d'insérer ces données,
mais quelque chose s'est mal passé. J' ai essayé d'insérer ces données, Voilà s'est mal passé. Qu' est-ce qui a mal tourné ? Le contrôleur. Go Hope quelque chose a mal tourné, et il et il va alors gérer cela en conséquence en termes de ce que vous avez mis en place pour. Si vous vouliez aller à une autre page ou quoi que ce soit, cela fera une sorte d'air redirigé en fonction de cela. D' accord. Et donc là à la fin de tout ce que le contrôleur fait à nouveau. On oublie Ajax et JavaScript une seconde. Quelle que soit la loi sur l'âge, quelle que soit la fin du contrôleur, il y aura toujours une sorte de chargement ou de redirection de pages. Donc, vous pouvez être dirigé vers une page d'air ou vous pouvez lire si, si c'est réussi, le contrôleur peut dire, OK, c'est réussi. On peut rediriger vers ici. Donc, à la fin de ce que fera le contrôleur, il y aura toujours Page. Il y aura toujours une sorte de rafraîchissement de la vue quand cela et il peut s'agir d'une redirection
vers une page différente, etc. Mais il y a toujours une sorte de recharger une rafraîchissement. Ok, quand cela arrive et que les nouvelles pages arrivent maintenant en ligne, nous sommes maintenant de retour à la vue est en contrôle. Ok, donc vraiment, la seule interaction entre le contrôleur et la vue est que le contrôleur va déclencher ce genre d'actualisations et dire, nous devons recharger la page parce que nos données ont été mises à jour. Donc c'est et puis quand ce rechargement se produit, alors vous êtes de retour à la vue est la chose qui essaie de comprendre ce qui se passe. Ok, on est à nouveau sur le poste I d 9. Nous devons obtenir le contenu pour ça. Prenons tous les commentaires. Oh, il y a un nouveau commentaire Boom. On remplit la page avec la nouvelle comète, accord ? Et donc encore une fois, juste pour revenir à une sorte de vrai NBC, c'est l'utilisateur qui probablement le contrôleur qui traite l'entrée de l'utilisateur et il communique directement avec le modèle et finalement met à jour et manipule le modèle. C' est la vue qui interagit avec le modèle et affiche finalement la bonne chose. L' interface
utilisateur correcte ah, euh, pour l'utilisateur basé sur le contexte que le que c'est tout en termes de,
quoi, quoi, pager sur n'importe quelle sorte de non, n' importe quelle sorte d'autre session très visible pourrait vérifier. Et puis, bien
sûr, les données qu'il demande réellement du modèle. Donc encore une fois, je veux vous donner ce cadre d'image globale pour ce qu'est réellement NBC et comment ces choses interagissent. Donc j'espère que ce genre de vous met sur la bonne voie, et ensuite je veux juste regarder quelques points d'accès différents ici. Donc, on est de son appelé ce mini. Donc c'est juste une soeur zit. C' est une application PHP extrêmement simple et
nue. C' est vraiment rencontré pour le prototypage. Si vous voulez vous familiariser avec la façon dont les frameworks sont construits et que vous voulez commencer orteil, interagir avec et ainsi de suite, alors c'est quelque chose que vous pouvez utiliser. Il y a aussi différentes fourchettes. Donc vous avez minuscule um, vous avez beaucoup, ah, genre de choses. Donc ah, encore une fois, c'est une chose très simple que vous pouvez regarder. C' est un peu plus facile de regarder quelque chose comme ça que de
regarder immédiatement quelque chose comme Laura Bell et d'être comme, Whoa, que se passe-t-il ? Donc ah, encore une fois, que vous pouvez regarder. C' est un peu plus vieux, mais ces choses n'ont pas tendance à changer une tonne parce qu'elles
sont vraiment basiques, des os nus. Donc, si nous cliquons dans l'application, vous pouvez voir que nous avons des dossiers pour la vue pour le modèle pour le contrôleur, et donc si nous cliquons ici, alors nous avons ces différentes vues que nous avons à la maison et quand nous avons différentes sortes de qui sont là pour la page d'accueil. Nous avons des problèmes Donc nous avons ah Index pour que nous avons des chansons sur Nous avons ah affichage de chansons Probablement un montage de chansons et ainsi de suite Donc ce sont tous des points de vue différents Si nous regardons le modèle, allez à modèle que PHP et nous regardons ici vous Je remarque que c'est tout ce qui est OK a à voir avec la base de données Ah se connecter via PDO obtenir toutes les chansons Alors lisez, obtenez et lecteur la même chose Donc obtenez toutes les chansons Ah, ici nous avons obtenir la chanson Donc obtenir une chanson Ces air Les deux méthodes de lecture que nous avons ajouter la chanson Donc c' est insérer Nous avons des mises à jour Song Donc c'est la mise à jour et nous n'avons pas de suppression Mais nous avons
Avons-nous l'avance ici ? Oh oui, nous avons supprimer la chanson et ensuite nous avons une quantité de chansons donc nous avons trois méthodes de lecture. Nous avons une mise à jour. Nous avons une suppression Ah, et nous avons un insert ou créer Donc encore une fois, revenons à mon point que le modèle est traite principalement des interactions de base de données Il est vraiment descendu orteil grossier, puis quelque chose d'auxiliaire autour de ce différents types de foules. Donc, vous avez trois méthodes de lecture et ainsi de suite que vous pourriez avoir besoin de faire. Mais la base de données ou le modèle se concentre uniquement sur les données, le stockage des données, la mise à jour des données, la récupération des données, ce genre de choses. Encore une fois, vous savez, le genre de si nous regardons les points de vue, c'est ce dont nous avons parlé en quelque sorte. Si nous regardons à la maison et nous regardons l'index point PHP, c'est vraiment juste une sorte de modèle. Et puis si nous allons dans, ah, contrôleur sur, allons juste avec la maison, vous pouvez voir que le contrôleur charge différentes vues. Donc, c'est de cela que je parle quand vous regardez certains de ces plus, euh, ces frameworks qui sont là-bas sont Ils mettent le contrôleur sur le dessus de la vue, et ils ont en fait le contrôleur charger des vues et déterminer quelles vues charge des orteils. Et ce n'est vraiment pas comme ça, comme une sorte de NBC pure est conçu Maintenant, encore une fois, je ne dis pas que c'est mauvais. Je ne dis pas que l'un est meilleur que l'autre. Je dis simplement que la façon dont beaucoup de ces frameworks sont passés est une sorte d' altération de NBC. Donc c'est le genre de chose que tu vas voir. Mais tu le fais toujours. Vous voyez, nous avons
ici un modèle. Nous vous avons. On a le contrôleur. Voici un exemple d'un autre. Donc nous avons ce peu plus basique. Nous avons des vues dans les pages ici, les utilisateurs de
poste. Donc toutes les différentes sortes de vues que nous pourrions avoir. Si nous allons dans les pages,
nous voyons les différentes pages que nous avons. Si nous allons dans les pages, On va aux mannequins. Qu' est-ce qui va à l'utilisateur ? C' est donc une classe froide consacrée à travailler avec l'utilisateur, comme je l'ai déjà mentionné. C' est toute une classe, ah, destinée à gérer les postes. Si nous allons dans les bibliothèques ici, nous avons une classe entière de contrôleur pour le contrôleur. Euh, on a du noyau. Nous avons toute une classe pour le noyau. Ici, nous avons une base de données. Donc toute une classe pour interagir avec la base de données. Et donc encore une fois, nous avons des modèles, des vues, des contrôleurs. On a cette zone d'aide ici. Et puis si nous regardons PHP bootstrapped, C'est là que vous pouvez voir notre nom de classe de registre de chargement automatique SPL et il va avec require veut stock de bibliothèque. Nom de classe. Donc, c'est pour traiter les classes ah qui sont dans la bibliothèque. C' est ce que ce chargeur automatique aide dio. Maintenant, cela ne semble pas fonctionner avec le nom Spaces, donc c'est quelque chose à faire attention. Mais encore une fois, juste quelques exemples de différents types d'
applications, ah, que vous pourriez voir votre travail là-bas et comment ils essaient d'implémenter
M.V. M.V. C. À la fin de la vous savez que c'est votre application, et vous savez que la façon dont vous voulez l'implémenter est la façon dont vous voulez l'implémenter. Je veux juste vous donner une sorte d'introduction pour aider à comprendre les concepts principaux, et la chose à comprendre est, et certaines personnes pourraient être en désaccord avec cela et dire non, c'est compris, mais encore une fois, Avec ce dont nous avons parlé à propos de la distinction entre, vous savez, une sorte de vraie NBC et ce que nous voyons là-bas et les cadres, je ne pense pas que ce soit pour débat. Mais
beaucoup de gens essaient encore de comprendre ce genre de choses, non ? C' est pas comme si il y avait une façon difficile et rapide. C' est comme ça que tu le fais. Très bien, il y en a encore, d' autant plus que votre application devient plus complexe et a demandé à gérer plus de choses. Il peut commencer à être un peu plus difficile de garder ce genre de séparations et ainsi de suite. Mais si vous obtenez les concepts de base dans l'idée de base et de comprendre, vous savez que ce contrôleur s'est rencontré pour traiter l'entrée de l'utilisateur et mettre à jour le modèle, oh interagissent et manipulent le modèle. La vue est destinée à, euh, afficher l'interface utilisateur et les besoins en données et déterminer quel modèle il doit
afficher et tout ce genre de choses dans cette interaction. Et le modèle est complètement aveugle. Tout ce qu'il fait est de réagir à ce qu'on lui demande. Alors ce genre de commence orteil. Vous pouvez commencer à comprendre comment séparer votre application de quelque manière que ce soit. Ce genre de chose a du sens, donc j'espère que cela vous donne un peu de compréhension de NBC dans certains des
trucs de haut niveau . Comme je l'ai dit, c'est une amorce. Si vous voulez vraiment creuser dans NBC spécifiquement comme un modèle de conception, un des nombreux. C' est populaire. C' est un bon. Mais c'est l'un des nombreux. Je recommande de ne pas trouver un cours complet sur NBC et une sorte de plonger dans cela et
en gardant à l'esprit certaines des choses dont nous avons parlé, ils le seront, la façon dont ils peuvent vous enseigner. Ah, NBC. Ce n'est peut-être pas le vrai genre de NBC dont nous parlons, et c'est tout à fait bien. Si vous êtes d'accord avec la façon dont il vous a été enseigné, alors faites par tous les moyens cette voie. Donc, d'accord, ça va le faire pour cette leçon. J' espère que tu as quelque chose de ça. Merci d'avoir regardé. On te parlera la prochaine fois.
11. Comment créer des applications professionnelles avec OOP: Hé, John Morris. Ici, John Morris, point com
en ligne. Cette leçon. Je veux essayer de vraiment vous donner l'aide ou la direction,
l' aperçu pour être en mesure de commencer à construire votre propre application professionnelle basée sur tout ce que vous avez appris jusqu'ici. Donc il y a quelques mises en garde là-dedans. D' abord, je pense que le plus grand est ce que je vais vous montrer ici n'est pas un peu. C' est quelque chose que j'ai vu une sorte de version d'une fois, et j'ai en quelque sorte ajouté ma propre saveur à elle. Mais ce que je vous montre ici n'est pas forcément la façon dont tout est fait. Tout le monde le fait maintenant ou je ne le suis pas. Il ne dit même pas aller jusqu'à dire que c'est nécessaire la meilleure façon de le faire. Ce que j'essaie vraiment d'obtenir en vous montrant ceci, c'est d'essayer d'étirer votre esprit et de vous faire réfléchir à tout ce que nous avons appris de différentes manières et d'
aider à faire naître votre créativité. Et il y a une raison importante derrière laquelle je veux faire ça,
parce que je ne fais pas une des choses dans lesquelles beaucoup de gens sont pris, et c'est
vraiment, vraiment bon programmeurs pour ce qui est difficile, des moyens rapides de cela. On doit faire des choses. Vous avez probablement vu cela partout où vous savez NBC sort et tout le monde vous
dit que vous devez faire NBC et vous regardez vous savez ce qui se passe dans notre espace en ce
moment sur cher commence à être une sorte de normalisation de la façon dont tout est fait, et une partie de cela est bonne. Vous développez les meilleures pratiques et vous voulez savoir construire la meilleure application. Vous comptez sur les meilleures applications et ainsi de suite. Mais l'un des problèmes qui, je pense, conduit, c'est que les gens examinent une meilleure pratique qu'ils commencent à examiner. C' est comme si c'était le seul moyen. Et si vous ne le faites pas de cette façon, alors que vous êtes juste un idiot et que j'essaie vraiment de repousser cela parce qu' en fin de compte, je ne veux pas créer des étudiants qui savent comment le faire, qui savent juste comment faire ce que tout le monde fait. Je veux vous donner ce qui est. Pourquoi l'amorce NBC. Mais je veux des étudiants qui ne sont pas des adeptes, mais des leaders qui sont des gens créatifs qui regardent constamment les choses et disent : Comment pouvons-nous faire cela différemment ? Comment pouvons-nous rompre ça ? Comment pouvons-nous améliorer ça ? Et ceux qui sont en train de créer les nouvelles façons qui deviennent les meilleures pratiques ? C' est ce que je veux vraiment essayer de te donner. Et je pense que la façon de le faire est d'étirer votre esprit, vous
donner des perspectives différentes et de vous montrer différentes façons de le faire. Même si vous pouviez regarder en arrière, vous savez, nous pourrions tous regarder en arrière sur ces cinq ans et être comme, Oh,
c' était vraiment stupide. Vous devez être prêt à risquer ça. Vous devez être prêt à risquer de tomber sur votre visage pour faire quelque chose de génial. Et je sais que je deviens un peu personnel ici, mais je crois
vraiment. C' est pourquoi je suis même en train de faire cette vidéo en premier lieu est de vous inspirer et vous
faire réfléchir à cela et un peu différent de peut-être ce que tout le monde fait alors serait que je veux parler de cette idée de construire vraiment type professionnel d'applications et la façon dont tout fonctionne. Est-ce pour moi que ça commence toujours par la base de données ? Donc, pour en parler, j'espère ouvrir cette installation trouvée Ne vous inquiétez pas. Nous allons en arriver à certains de ce que vous voyez ici avec cet index et ainsi de suite. Tout ce dont on va parler en fin de compte mène à ça. Les histoires ici et la simplicité de celui-ci sont vraiment ce que nous recherchons. Donc, mais encore une fois, tout commence avec la base de données parce que c'est là que les données sont stockées. C' est vraiment dans la plupart des applications. En fin de compte, la partie la plus importante de vos données est foutue. Alors tu auras toutes sortes de problèmes. Et ces problèmes sont beaucoup plus difficiles à corriger parce que vous ne savez pas ce que sont les données,
n'est-ce ? S' il s'agit d'un code air, vous pouvez utiliser les données pour vous aider à le comprendre. Si c'est un air de données, il devient vraiment difficile de savoir ce qui est quoi. Donc, j'ai parlé de cela dans d'autres cours qui ont fait, mais je veux couvrir ici encore parce que encore une fois. Je pense que c'est le fondement d'une application professionnelle. Donc, lorsque vous créez une application, il y en a à nouveau. D' une manière générale, il pourrait y avoir des mises en garde à ce genre de choses. Mais la plupart des applications que vous allez construire existent trois types principaux de tables que vous allez vouloir créer. Et donc je veux parler de chacun d'entre eux et comment ils travaillent ensemble. Donc, le premier type de table que vous allez construire est ce qu'on appelle dans ce que j'appelle une table d' objets. Et c'est là que vous allez stocker vos objets dans les données les concernant. Donc, dans notre tableau de tableaux juste ici. Et je viens de les utiliser comme exemples pour une sorte de point de départ pour vous de penser à la façon construire votre base de données, en fonction de votre application. Cela va, bien
sûr, changer. Et une des choses que je ne veux pas faire dans cette vidéo est de vous donner toutes les réponses. C' est plus un défi. Vidéo de cette vidéo air. Cette leçon est destinée à ne pas vous donner toutes les réponses, ne pas vous donner tout le code et vous défier d'écrire ce truc et de comprendre ce truc vous-même. C' est ainsi que vous passez vraiment à devenir un développeur professionnel. Mais dans notre tableau de tables ici, c'est Nous sommes fondamentalement que ce que je dis ici est ces air, les différentes tables que nous pourrions avoir dans cette application particulière en ce que le poste et les tables de catégorie seraient nos tables d'objets. Donc, si nous venons ici pour donner l'exemple de la table de publication, ce que nous allons stocker dans ces tables sont les données, et je veux être spécifique et utilisé le mot données et nous parlerons de la différence. Quoi ? C' est pourquoi cela doit être spécifique. Et ensuite. Mais ce sont les données qui finissent par former l'objet. Donc un poste n'est pas vraiment un poste ? Droit. S' il n'a pas de titre, s'il n'a pas de contenu, vous savez, s'il n'a pas de limace. Ainsi, le et et tous ces éléments pourraient être débattues, bien
sûr. Mais ce que nous disons lorsque nous créons notre application, c'est qu'un post n'est pas vraiment un
post complet à moins qu'il n'ait les choses. Donc, la table d'objets va stocker ces données et ce que vous quoi de nouveau ? Quelles sont les deux choses que je pense sont uniques à propos d'une table d'objets ? C' est ça ou un objet ? Est-ce que les données que nous stockons sont à la fois nécessaires et vont mettre un Astérix par, requis dans le sens où vous pouvez vous en sortir avec ne pas avoir une partie de ce droit ? Vous pouvez créer une publication sans contenu ou sans titre. Ce n'est pas comme si tu ne pouvais pas faire ça, mais ce n'est pas vraiment un poste. Donc, pour en faire ce qu'il est censé être, ces données sont nécessaires,
et ce sont, ah, ah, des données qui finissent par aider à former l'objet. Donc si on pense à nos analogies, c'est comme les roues, non ? On ne peut pas avoir de voiture sans les roues. Techniquement, vous pourriez avoir une voiture et elle serait assise là. Mais ça ne ferait pas ce qu'il est censé faire s'il n'avait pas les roues. Donc, les données sont comme tous ces composants qu'il doit avoir. Ok, donc et vous devez être vraiment impitoyable à ce sujet parce que vous pouvez penser que quelque chose ah objet doit avoir quelque chose quand vraiment ce n'est pas le cas. Encore une fois, le contenu du titre, vous savez, peut-être qu'une image en vedette serait celle que vous dites nécessaire. Une balle vous est le développeur. Apprenez à décider. Ok, donc c'est ce qu'est une table d'objets. Ce sont les données qui forment vraiment l'objet lui-même. Et vous pouvez voir ici sous catégorie. Nous avons des types similaires de nous avons I. D. Nous l'appelons nom et description, mais c'est vraiment similaire au titre sur le contenu, puis une limace aussi. Donc, notre poste et nos tables de catégories sont des tables d'objets. Ce sont des tables primaires, celles-ci avec celles de Neil que nous stockons tous nos différents objets que nous créons dans prochaines tables metta. Donc, les méta tables sont nous parlons de la table d'objet stocker les données, les méta tables stockeront les méta données. Et donc encore une fois, les métadonnées ont en quelque sorte deux caractéristiques distinctes qui sont
en quelque sorte, en contraste, des deux fonctionnalités que ces objets ont et qui sont les métadonnées seraient des choses que nous
considérons comme des s optionnels, donc il ne doit pas nécessairement toujours être défini pour chaque objet. Et les métadonnées sont généralement des choses qui décrivent l'objet qui décrit l'objet ou les données qui composent l'objet. Ce ne sont pas les données qui construisent réellement l'objet lui-même. Ok, donc pour essayer de donner un exemple de ça dans WordPress, il y a un branchement qu'il a utilisé le PDG de Yost froid. Et l'une des choses que le PDG de Yost fait est lorsque vous créez un post, qui est un objet dans WordPress, il ajoute une petite boîte pour vous d'entrer un mot-clé focus. Et lorsque vous entrez le focus, mot clé, Ce qu'il fait est qu'il analyse que votre titre, votre contenu, vos balises, toutes ces informations sur l'objet et vous donne un score, puis vous donne des suggestions sur les choses que vous pourriez faire pour y parvenir. Morrell seo amical. Donc ce mot-clé focus, je pense, s'inscrit
clairement dans le ah, le scénario des métadonnées, non ? Le mot-clé focus n'est pas Nous n'avons pas besoin de cela pour créer l'objet. Ce n'est pas une partie de l'objet lui-même. Ce qu'il fait, c'est qu'il décrit plus l'objet. Donc c'est l'analyse et nous donner une sorte de score. Et c'est donc ça qui décrit, ou ses données sur les données, qui est quoi ? Le type de définition des métadonnées et alors il n'est pas nécessaire non plus. Si nous ne mettons pas dans le mot-clé focus, nous avons toujours Ah, l'objet objet peut toujours faire ce que nous voulons qu'il fasse. On ne saura pas ce que le PDG qui note pour ça est donc la
différence entre les deux et vous. On ne saura pas ce que le PDG qui note pour ça est donc la Ce n'est pas nécessairement une ligne brillante d'utiliser une phrase commune ces jours-ci. Ah, c'est quelque chose que tu dois aller et venir et essayer de comprendre maintenant avec cela dit, quand on veut stocker ce genre de données, ça peut être un peu difficile si on est en essayant de mettre ces données dans la même table que notre
objet, objet, parce que peut-être nous, vous savez, si nous devons avoir,
ah, ah, certains particuliers, un certain morceau de métadonnées que nous allons ajouter à la table d'
objets réels, eh bien, nous devrions avoir une colonne pour cela. Et puis nous pourrions avoir 99 messages qui n'ont pas ces métadonnées et ceux qui le font. Alors quel genre de commence à être un peu de perte de temps. De plus, lorsque vous commencez à considérer ce que nous pourrions avoir 10 morceaux de métadonnées. Et maintenant, vous auriez à ajouter. Si vous voulez le stocker dans les objets capables, vous devrez ajouter 10 colonnes, puis vous devrez stocker les données à ce sujet, ou vous devrez créer une sorte de colonne méta. Et puis vous devez essayer de garder les paires de valeurs clés d'insertion, ce qui signifie que vous travailleriez en quelque sorte avec les Rays, ce qui signifie que vous devez sérialiser cela, ce qui signifie que vous ne pouvez pas la rechercher. Et donc ça commence à devenir un peu alambiqué pour essayer de le faire de cette façon. Donc, la façon dont nous faisons cela de la façon dont nous gérons les métadonnées et les rendons modulaires, évolutifs
et flexibles est que nous utilisons une table méta, et donc une table méta a trois principaux. Je ne dis pas que ce sont les seules choses que vous pouvez avoir, mais ce sont les choses primaires dont vous avez besoin pour que cela fonctionne. Donc, cette méta désignation post a ici trois colonnes principales. Ça va avoir l'objet I D. Donc dans ce cas, on a un post. Donc, il est le post I d ici dans la catégorie Meta nous avons la catégorie i d Donc a l'objet. I d a un e medic dans la méta valeur. Donc, ce que nous disons essentiellement ici, lorsque nous créons un enregistrement dans cette table, c'est que nous disons pour ce post avec le I d de disons un, nous voulons y attacher ces métadonnées. Et la clé, le nom des métadonnées est d'utiliser notre exemple focus, mot-clé. Et puis la valeur de cela est, disons PHP. Et donc ce que cela nous dit est que ce post i d le mot clé de focus pour il est p PHP. Et maintenant, nous pouvons ajouter toutes sortes d'enregistrements à cela. Donc on a un autre record ici. On pourrait utiliser la même idée de poste d'un. Mais maintenant, nous avons une clé différente, et nous pourrions dire que c'est S e o score, et ensuite nous la valeur de cela est 90. Donc maintenant, nous avons le même post, deux morceaux de métadonnées différents, et nous pourrions stocker 15 morceaux de métadonnées sur ce post particulier, et cela ne rend pas notre base de données plus lourde ou quelque chose comme ça. C' est très modulaire, et on pourrait stocker non. Ah, le S e o. score sur le focus, mot clé pour numéro de poste avec idée deux et trois et quatre et etcetera. Ok, alors et quand nous avons besoin de récupérer ces données,
ce que nous pouvons faire, c'est si nous sommes dans un avant, il y a quelques façons que vous pouvez gérer quand vous prenez quand vous êtes saisi, disons que quelqu'un visite un bloc individuel et que vous voulez récupérer les données de publication pour l'afficher. Lorsque vous récupérez ces données, vous pouvez automatiquement saisir toutes les métadonnées post si vous le souhaitez. Et donc la façon dont tu ferais ça c'est que tu irais. Vous interrogeriez la table meta post et vous auriez une clause where et cette clause where serait où Post I d est égal et l'idée du post que vous allez afficher ce
que cela capturerait dans les bases de données. Tous les enregistrements dans ce post rencontré une table qui ont un poste i d. De l'un ou quoi que ce soit les idées de poste. Et maintenant, vous auriez toutes les métadonnées que vous avez interrogées que vous pourriez ensuite utiliser et afficher comment vous voulez sur votre page. Vous pouvez le faire de cette façon ou peut-être un peu plus efficace. Way est n'importe quel endroit que vous voulez vous voir à nouveau Vous chargez une page qui affiche un bloc post n'importe quel endroit où vous voulez orteil afficher un certain morceau de métadonnées que vous pouvez exactement quelles que soient les métadonnées que vous voulez afficher Vous pouvez interroger la table méta pour cela afin que vous puissiez interroger la table meta et dire, Ok, j'ai reçu post I d un et medic e vous savez Ah ah, Focus, mot-clé. Et maintenant, tu te demandes juste que tu abandonnes pour le Post I d et le Medic E et tu n'as qu'un seul disque. Et maintenant, vous tirez ce seul enregistrement et l'affichez où vous le souhaitez. Au lieu de tirer toutes les données, utilisiez ou non, il vous suffit de tirer la seule chose dont vous avez besoin. Elle peut le gérer d'une façon ou d'une autre, mais cela le rend vraiment modulaire pour vous de pouvoir extraire ces données à l'écran et ainsi de
suite afin que vous soyez fait une table Donc vous n'avez pas de table d'objets. Vous avez une méta-table. Le dernier type de table que vous avez est une table de relations et ce que fait la
table de relations . Est-il essentiellement lié à des objets ensemble ? Donc, le contexte de ceci est basé sur l'application. Ainsi, par
exemple, dans un CMS, vous pouvez placer une publication dans une catégorie. C' est une chose assez courante que les gens veulent faire. Eh bien, la façon dont tu fais ça c'est à travers les relations. Table Ah, dans, disons, un réseau social. Vous voudrez peut-être refaire à un utilisateur un ami avec un autre utilisateur. Vous le faites exactement de la même manière avec une table de relations ou n'importe quel commerce électronique. Ah, application. Vous pouvez dire que cet utilisateur a à nouveau accès à ce produit. La façon dont vous le faites est exactement la même. C' est une table de relations. Encore une fois, le contexte, la relation, la façon dont vous stockez dans le il est stocké dans la base de données. J' appelle ça une relation stupide ah, stupide. La base de données ne sait pas ce que signifie la relation, et vous pouvez ajouter des données à cette table à peut-être, si vous en avez besoin. Teoh aider à fournir plus de contexte. Mais d'une manière générale, la base de données ne sait pas. Il sait juste que ces deux choses ont une sorte de relation. Et donc nous créons une table appelée Catégorie de poste et dans ce que nous allons avoir ça. Ce qui s'appelle la catégorie de poste i D. Donc ce n'est pas le poste I. D. Ce n'est pas la catégorie d C'est en fait ce qu'il
est, est la relation i d. Et c'est juste pratique pour si vous avez besoin de supprimer relations et ainsi de suite. C' est un peu plus facile d'interroger de cette façon, mais ce n'est pas, ah, 100% nécessaire pour avoir ceci, mais c'est une bonne chose à avoir. Mais les deux choses principales que vous avez ici, c'est que vous en avez une. Vous avez essentiellement les deux objets que vous voulez connecter. Vous avez le poste I D. Et la catégorie i D. Qui fait référence ce i d. Je l'appelle de notre poste et de notre catégorie. Donc, si nous voulons mettre ah post avec le i d d'un dans une catégorie avec l'idée d'un de nos tables de
relations avec littéralement dans ces deux colonnes, vous auriez post I D. Et ce serait la valeur serait un et la catégorie D. La valeur serait celle qui crée une relation entre les deux. Si vous vouliez mettre un post avec l'idée quatre dans une catégorie avec l'idée cinq. Votre table de relations dans le poste I D aurait quatre comme valeur et dans la catégorie. D aurait cinq comme valeur, et cela crée une relation entre les deux à nouveau. Vous pouvez les créer. Vous pouvez les mettre à jour. Vous pouvez vraiment les lire. Vous pouvez les supprimer comme n'importe quelle autre table. Et c'est ainsi que vous mettez réellement ah post dans une catégorie ou tag un post avec un certain tag . Ou ajouter un utilisateur à un produit ou faire une amitié entre deux personnes dans un réseau social. Il est lié à des objets ensemble, et vous le faites à travers la table de relations. Ok, donc c'est Ah, c'est beaucoup. Mais les bases de données sont super importantes, et il est important de comprendre comment nous construire d'une manière modulaire comme celle-ci. Donc, pour tout objet que vous voulez créer, vous êtes généralement parlant, va avoir un poste et une table de meta post. Vous n'avez pas nécessairement besoin de les avoir à une table si vous ne voulez pas stocker de métadonnées. Je dirais que la plupart des applications à mesure qu'elles grandissent, vous finirez par avoir ceci, mais vous n'avez pas nécessairement besoin de l'avoir. Et donc, mais encore une fois, pour chaque objet d'un post rencontrait une table, en
général, et puis pour chaque sorte de tous les deux objets que
vous voulez Ah, vous voulez lier ensemble, vous allez avoir un relation stable. Donc, en mettant les messages de catégories dans une catégorie, vous auriez une autre table de bateau de Pâques ,
Um, faisant d'un utilisateur particulier l'auteur d'un post que celui-ci est en fait un peu. Il y a un peu de fudge là-bas parce que, comme, si vous travaillez, regardez WordPress. L' auteur est en fait dans la table des objets, et alors ils spécifient simplement l'idée de l'auteur et de la table des objets. Tu pourrais faire ça. Nous sommes dans un cas où vous n'allez pas, euh, vous savez, en ce sens, c'est logique parce qu'un auteur est vraiment, vraiment important. Et vous êtes, vous savez, dans WordPress vous n'avez pas plusieurs auteurs pour un objet particulier. Donc tu n'es pas attachée. Vous n'avez pas à lier Ah un objet à plusieurs autres objets comme vous le feriez quand vous
avez un post et que vous voulez le mettre dans plusieurs catégories, c'est là
qu'il commence à devenir délicat. Donc, dans ce sens, c'est un peu logique. Et c'est pour ça que je dis que tu dois suivre cette ligne fine, hum, dans tous ces trucs. Mais d'une manière générale, chaque fois que vous voulez lier deux objets ensemble, vous allez avoir une relation stable pour cela. Ok, donc c'est la partie de la base de données. Maintenant, l'autre côté de ceci est que nous avons maintenant le côté code de celui-ci. Comment soutenir tout cela et faire en sorte que tout cela fonctionne ensemble et le faire manière orientée
objet ? Donc j'ai créé ici. Vous verrez comment ce dossier appelé Nano. Tu vas avoir ça dans le téléchargement du code source. Encore une fois. Mise en garde. entrant dans ce ceci, j'ai spécifiquement écrit ceci pour ne pas vous donner toutes les réponses. Je tiens à souligner à nouveau que ce n'est pas quelque chose que vous pourriez simplement tomber et commencer à utiliser. Il va vous demander de le comprendre, passer
à travers et d'écrire toutes les choses. Encore une fois, c'est une vidéo de défi. Teoh vous défie d'aller là-bas et d'écrire ce code pas seulement utiliser une sorte de ce que je vous donne. Donc, hum, ça ne va pas, la seule chose qu'il fera, c'est ce que vous voyez ici. Et donc tout ce que vous voulez qu'il fasse, si vous voulez l'utiliser, vous devez l'intégrer dans le système. Ok, donc on a parlé d'objets. Nous parlons de stocker des objets dans nos tables d'objets de base de données. Nous avons parlé d'encapsuler dans les leçons précédentes sur faire un objet orange en mode de programmation. Alors maintenant à quoi ça ressemble maintenant que nous avons mis en place notre base de données ? Donc, je veux commencer ici, et la première chose que je veux vous montrer est que pour nos deux objets qui
travaillaient principalement avec votre poste et votre catégorie, nous avons deux dossiers dans notre bibliothèque ou la catégorie de dossier lib et post à l'intérieur de cela. Ensuite, nous avons ces différents fichiers et donc vous pouvez voir chacun. Nous avons post post view et post service catégorie, vue de
catégorie et catégorie service. Donc, encore une fois, je ne construis pas ça d'une sorte de vraie façon NBC. Je veux te montrer quelque chose de différent. Et c'est quelque chose que j'avais vu avant et en quelque sorte développé ma propre chose à partir de là . Et en fait je veux dire, si je suis honnête, j'aime ça un peu, un peu mieux. C' est plus logique pour moi dans ma tête que, ah, vrai truc NBC, mais c'est pour chaque développeur de site seul. Mais laisse-moi aller de l'avant et m'en débarrasser. La façon dont ça marche, c'est qu'on a chacun de ces fichiers est une classe, ok ? Et si nous devions le relier à NBC, essentiellement, nous avons notre avis de poste qui va gérer nos points de vue. C' est presque presque assez similaire à ce que vous auriez avec une nouvelle configuration NBC. Nous avons un service de poste, ce qui ressemblerait beaucoup au modèle. Donc ça va gérer tous nos trucs de base de données que nous devons faire. Ce n'est pas interroger la base de données directement, mais c'est tout ce qui se trouve au-dessus de notre classe de base de données pour faire toute la compensation. Donc obtenir tous les messages, mettre à jour les messages. Ah, les postes principaux, création de postes, tout ce genre de choses. Tout ce qui va être dans cette classe de service post et ensuite notre classe PHP post dot est en quelque sorte notre contrôleur. Ok, donc ça va être la chose qui dirige le trafic et s'assurer que nous
demandons les bonnes choses et ainsi de suite en fonction des données qu'il obtient. Donc, d'une certaine façon, c'est un peu similaire à une mise en place de NBC. C' est juste que la façon dont cela est disposé est un peu différente. Et probablement le plus gros, c'est que si j'ouvre tous ces fichiers, ce que nous avons fait est pour que
nous ayons hérité. Donc, si je regarde, si je regarde post dot PHP post post post post post view si je regarde en post view, post view étend le service post, ok, puis post services est tout seul. Donc maintenant, la façon dont cela est mis en œuvre et la façon dont vous y pensez ou en fait envers, à l'
envers,
donc je ne veux pas que cela soit trop déroutant, mais je pense que cela aura du sens ici. Donc, vous vous souvenez de nos leçons d'héritage que toute classe qui étend une autre classe celle qui fait l'extension est l'enfant de celle qui est étendue. Donc, Post View est en fait un enfant du service postal, et Post est en fait un enfant de la vue post. Donc, si vous regardez les services de post, en fait, la vue de post parent est l'enfant suivant, et Post est un peu l'enfant ultime. Cependant, la façon dont nous utilisons ce post finit par parce qu'il étend la vue et les vues étendant service. Il finit par hériter de toutes les méthodes de vanter, service et view. Donc, ce post, cet enfant ultime peut appeler n'importe quelle méthode, et la raison pour laquelle nous faisons cela est juste pour le rendre un peu plus facile. Si nous venons ici à notre Nano, vous pouvez voir que nous créons deux nouvelles instances de ces classes enfants ultimes pour la poste et la catégorie. Maintenant, nous pouvons courir une fois que nous aurons ce poste en position. Eated dans cette classe nano, nous pouvons exécuter n'importe quelle méthode qui est disponible pour nous dans la poste ou dans la catégorie, au lieu d'avoir à occurrence e huit vue, puis instance e service. En les élargissant, nous avons juste accès à toutes les méthodes. Maintenant, j'imagine que quelqu'un qui utilise beaucoup NBC et qui est un grand promoteur de NBC comme, vient de tomber de sa chaise et a eu une crise cardiaque parce que c'est assez, euh, est assez blasphématoire. D' après ce que j'ai appris des gens de la NBC que ce n'est pas quelque chose que vous voulez faire. Tu veux vraiment les séparer. Personnellement, je préfère cela de cette façon et de la façon dont je fais les choses, mais cela peut conduire à. Si vous n'êtes pas prudent, cela peut conduire à ce que les choses soient un peu boueuses et vous mettez des choses parce que vous savez tout est en fin de compte, vous savez, disponible à travers cette seule classe, il se peut que vous ne soyez pas aussi grosso modo quant à ce que vous mettez en service vers ce que vous mettez en vue. Donc, vous devez vous assurer de vous organiser et de comprendre dans ce sens. Mais j'aime pouvoir avoir accès à l'ensemble des méthodes dont j'ai
besoin, besoin, quand je veux travailler avec. Donc, nous faisons cela à la fois pour nouveau, Post et catégorie. Donc catégories La même catégorie étend la vue catégorie vue catégorie étend le
service de catégorie et le service de catégorie est en quelque sorte sur son propre, et donc encore une fois, en service, vous mettrez tout votre type de logique métier interagissant avec votre classe de base de données et ainsi de suite obtenir tout cela dans. Ah, et c'est encore un peu comme le modèle en vue. Vous savez, c'est là que vous remettrez tous vos points de vue, votre affichage et ainsi de suite, créant vos formulaires et en affichant vos formulaires. Et puis la catégorie était en quelque sorte votre contrôleur. C' est finalement que nous allons avoir les fonctions que quand n'importe quel type de données de formulaire est soumis , il aura tous les gestionnaires. Et il va interagir avec le service afin de mettre à jour les données dans la base de données et ainsi suite. Ok, donc c'est comme ça que tout est en panne. La dernière chose que vous remarquerez est que cela implémente le service, et si nous regardons la vue de catégorie, il étend et implémente la vue. Et si nous regardons post post view implements, view et Post Service implémente le service. Donc, les deux classes de service dans le post et la catégorie implémentent cette
interface de service , et les deux classes de vue dans le post et la catégorie implémentent cette interface de vue où ceux à qui c'est ce que c'est ici. Nous avons donc un service et voici notre interface et notre vue. Voici notre interface maintenant, je viens de le faire pour vous montrer comment vous pourriez faire ce genre de chose et utiliser l' interface. Vous ne pouvez pas Ah, vous savez, ce
n'est pas nécessairement nécessaire que vous le fassiez, mais encore une fois, c'est l'une des façons dont les gens utilisent les interfaces parce que maintenant, si nous regardons le service, par exemple, créer,
lire, lire, mettre à jour, supprimer. Si vous n'avez pas ces quatre méthodes dans vos classes d'implémenter cette interface, vous allez entrer dans l'air. Donc, il vous donne un peu une ligne de gars dans et un cadre pour lequel vous pouvez construire à partir de. Ok, donc c'est notre genre de cours ici. L' autre chose,
c'est ,
c' que nous commençons à mettre en œuvre tout ce genre de choses. C' est comme, Ok, maintenant nous devons commencer à nous occuper de la façon dont nous allons inclure et exiger et tout ce genre de choses. Donc une autre chose si on vient ici à Nano Nano, c'est comme notre classe de maître, non ? Il va tirer toutes les autres classes de notre bibliothèque,
et en fait, et en fait, une chose que je veux vous montrer deux est si nous venons à poster service et post view. Vous voyez, j'ai le nom, l'espace, l' application, bibliothèque de
slash et ici j'ai le nom, l'espace slash Ah, les états de
nom ab bibliothèque slash. C' est l'espace du même nom. Tu pourrais faire ça. Vous pouvez faire le même espace de nom sur plusieurs fichiers. Et en fait, si nous allons dans la vue de catégorie, c'est le même espace de nom. Ok, donc nous avons nommé Spaced toutes ces classes. Et la raison pour laquelle c'est parce qu'ils utilisaient de jolis noms génériques Jim pour ces catégories service. Donc, s'il y a d'autres applications, nous avons tout cela correctement espacé, et cela aide juste. quelque sorte nous aide à organiser mentalement tout. Et donc toutes ces classes catégorie Servir catégorie service. Ah catégorie vue catégorie post post post post post service Tous ces air dans le même ah sorte d'espace nom. Donc, une fois que nous sommes venus ici à notre classe de Nana Nano, c'est une sorte de court de masterclass. Ce genre de rassemble tout. Ensuite, j'ai fait quelques choses ici pour que vous regardiez ici et que vous ayez une idée de différentes façons. Vous pouvez utiliser certaines des choses que vous avez apprises dans le cours. Donc j'ai besoin de notre dossier de conflit très rapidement. Si vous allez dans ce dossier Conflict et ouvrez notre fichier de conflit, c'est juste les détails de notre base de données. J' ai ajouté dans ce rapport aérien pour montrer toutes les zones Vous voudriez , bien
sûr, supprimer cela pour la production. Mais c'est une norme. Ah, les fichiers de
conflit incluaient aussi notre classe de base de données ici. Et si nous fermons ces un peu si nous regardons, nous avons un point de base de données PHP ici. Maintenant, encore une fois, c'est juste une sorte de classe de conteneur vide. Mais c'est là que vous mettez tous vos trucs de base de données, et donc j'ai un peu mis en place,
mais cela va tirer de notre fichier de conflit afin qu'il ne corresponde pas à ce qui est dans notre fichier de conflit. Il va le passer dans le constructeur. Et, comme moi, vous savez, je l'ai fait, je ne sais pas combien de tutoriels différents et ainsi de suite sur les classes de base de données, mais encore une fois, vous n'avez pas besoin d'utiliser créer le vôtre. Vous pouvez utiliser quelque chose qui est là que vous voulez implémenter ici. Mais le point ici, c'est qu'il est complètement autonome. Donc c'est son propre truc. Il n'est intégré à aucune des autres classes. Et donc les autres classes peuvent l'utiliser dans un sens modulaire, et cela devient important. Et donc certains des trucs que nous allons entendre une seconde mais encore ici à Nano étaient juste nécessaires dans ce fichier de base de données, et ensuite nous faisons notre registre de chargement automatique SPL. Il est donc plus facile pour nous de charger tous les différents objets et choses que nous avons dans notre bibliothèque. Ce chargeur automatique est à peu près juste pour les choses de la bibliothèque, et la raison en est que nous avons la catégorie et les messages. Mais dans une vraie application, vous seriez probablement un utilisateur de tag de catégorie de poste. Quoi qu'il en soit,
vous pourriez avoir 45 objets différents, vous pourriez avoir 45 objets différents, et pour chacun de ceux que vous allez avoir Pope, vous aurez,
vous savez, vous savez, la variante de post. Vous avez une vue, vous allez avoir un service. Donc, si vous avez cinq objets différents et que vous avez trois classes différentes, vous finissez avec 15 classes. Donc, un chargeur automatique pour ce genre de a du sens. Et donc nous faisions ce registre de chargement automatique ici. Et ce que nous appelons, cependant, n'
est pas une fonction. C' est en fait une méthode statique. C' est donc une utilisation d'une méthode statique. Rappelez-vous, comme les méthodes statiques sont un peu ah, avec les nouvelles choses que nous avons avec des interfaces avec,
ah, ah, avec des interfaces et des noms, face et ainsi de suite. Les fonctions et les méthodes statiques de classe statique n'ont peut-être pas autant d'utilité. Mais voici un scénario où ils dio et c'est que nous pouvons l'utiliser pour une méthode de chargement automatique. Donc, au lieu de mettre cette fonction en dehors de notre classe, affaiblir est tombé directement dans notre classe. Il n'a pas besoin de quoi que ce soit de notre classe. Ok, donc il n'y a rien qu'il obtient tout ce dont il a besoin est passé à partir du registre de
chargement automatique S p o SPL afin que nous puissions en faire une fonction statique affaiblir la référence comme ceci dans notre désignation au registre de chargement automatique SPL. Et maintenant, c'est ça va appeler cette méthode statique. Il va passer dans le nom de la classe, tout comme avant je vous ai montré dans la leçon que j'ai faite sur le chargement automatique et maintenant nous pouvons écrire notre code pour faire notre chargement automatique. Et essentiellement, c'est vérifier les choses. Donc nous avons notre objectif. Ah, nous avons notre objectif. Les classes sont des dossiers d'objets ici. Nous pourrions mettre nous pourrions créer un dossier d'interface, puis mettre service et vue dans l'interface . Et on n'aurait pas besoin de ce genre de déclaration ici. Nous n'aurions pas besoin de faire une partie de cette vérification, mais je voulais juste vous montrer comment vous pouvez utiliser votre chargement automatique pour, genre, charger de différentes manières. Donc, il n'a pas besoin d'être comme ça, juste un format standard. Et ensuite,
vous faites correspondre votre structure de
dossier. Tu peux le faire dans l'autre sens. manière générale, vous voulez avoir quelque chose d'un peu plus simple et faire correspondre votre structure de dossier. Mais encore une fois, je veux juste te montrer ça. Donc, fondamentalement, ce que fait ce code, c'est une sorte de ce que nous avons fait avant. Il se brise. Ah, quand on est en position huit. Cette instance Pour le moment, nous n'avons inclus aucun de ces fichiers dans lesquels nous n'avons pas besoin de lui. Donc ça va vérifier. Euh, ça va charger ce chargement automatique parce qu'il ne peut pas les trouver, et ça va passer en classe. Le nom le fera. Le nom de classe est ap bac slash library Les messages noirs de la barre oblique inverse étaient en train de rompre cette chaîne et nous trouvons que nous voulons post et c'est ce qui reçoit comme objet ici. Et nous voulons le dossier. Donc c'est dans la bibliothèque. Et c'est ce qu'on a en quelque sorte ici. Et donc ce que nous faisons est de vérifier si le dossier. Donc, cette partie ici est la bibliothèque. Et la raison pour laquelle je l'ai fait est parce qu'il serait possible pour vous de faire un autre dossier Ah, directement dans Nano et de l'appeler admin et ah, au début d'ajouter des choses là-dedans, il pourrait y avoir différentes façons que vous voulez le faire. Alors j'ai juste mis ça là-dedans. Dans ce cas, tout est à l'intérieur de notre fichier de bibliothèque, donc c'est un peu redondant, mais c'est là pour vous de le voir. Mais nous vérifions si nous accédons à quelque chose de la bibliothèque pour le dossier. Hum et puis nous vérifions si nous avons créé ce tableau d'interfaces. Si l'objet que nous obtenons comme service ou vue. Nous savons que c'est une interface parce que c'est
aussi ce que c'est . Ah, c'est ce que sont ces deux interfaces. Leurs noms, service et là nommé View. Donc nous vérifions si c'est, ah, une interface. Et si ce n'est pas une interface que nous le savons, c'est l'un de ces dossiers d'objets. Donc, nous allons exiger la fin du vous savez, le fichier standard de l'objet afin que cette désignation ici charge, par
exemple, post op PHP. Celui-ci chargerait le point de vue postérieur PHP et celui-ci chargerait le point de service PHP et alors il sera parce que nous avons instance, même insistent de catégorie. Il va également chercher la catégorie, et puis cette instruction else va essentiellement charger sont deux interfaces de service et voir si n'est pas dans l'interface ou si elle est dans l'interface, Si c'est un service ou une vue, alors nous Je vais juste attraper l'objet. Donc, c'est un peu je ne veux pas trop entrer dans les mauvaises herbes de cela parce que ce
n'est pas aussi important que vous pourriez le penser. Et c'est ah,
12. Les prochaines étapes: Je suis honnête, il n'y en a plus. Donc online.com, si peu de ménage pour finir ce cours. Si vous ne l'avez pas encore fait, oubliez pas de vous diriger vers la zone de classe. Il y a une section de cours pour
certains, quelques étapes pour vous de marcher à travers pour ce cours. Assurez-vous donc de vous diriger en ce sens que c'est sous la discussion dans l'onglet Projets que vous verrez sur le cours. Aussi, si vous allez à mon profil, assurez-vous de me donner un suivi sur mon profil ici afin que vous soyez averti lorsque je sortirai de nouveaux cours. Et j'ai aussi une sorte de cours
hebdomadaire de style podcast appelé Let's Talk freelance. Donc, si vous voulez avoir une sorte d'accès à formation
continue sur le freelance, les affaires en ligne et ainsi de suite. Assurez-vous de vérifier ça. Parlons cours de freelance aussi. Et enfin, j'ai une lettre d'information quotidienne sur mon site Web à John Morris online.com. Si vous allez là-bas, vous pouvez vous inscrire à cette liste de diffusion. Vous serez également mis dans ma propre application mobile, ou vous aurez accès à plus de 78 heures de contenu
gratuit au moment de cet enregistrement lié à la freelance et ainsi de suite. Donc, si cela vous intéresse, BD sûr de vérifier cela aussi. Encore une fois, c'est John Morris online.com. D'accord. Merci d'avoir pris le cours. Si ça vous a plu, je vous apprécie pour vous. Laissez-moi un avis et nous vous verrons dans le prochain cours.