>>开始弥合什么 可能是你唯一的经验
与web编程，我 想我会做的就是偷一对夫妇
的例子，你 可能已经看到在50
如果你把它的过去 一年或两年或可以不具有
如果你在几年前把它
这是婴儿的步骤走向 吡啶知道的MBC，
模型视图控制器， 而这是什么意思？
这是我们将再次看到也许 开始只是一种方式
清理部分的设计 基于网络的软件，
或者它可以是客户端 基于为好，但我们将使用它
在PHP的上下文中， 这样我们就可以开始
使更复杂 项目和排序
分开不同类型的 在应用程序中的代码;
特别是这样，当我们 有多种工作的人
上一个项目它的很多 容易画线。
因此，首先让我们来 看一个次优方式
在实施的东西。
假设我希望做一个超级 简单的课程网站50
或任何其他类， 这个类有东西
像讲座和课程提纲。
我可以做类似的 我的页面顶部h1标签
和一个无序列表 为了李列表中的项目
只是有一个项目符号列表 菜单选项，所以超级简单。
那么我们如何做到这一点？
好吧，让我进入我的 这里的终端窗口，
并请注意，我有一个读 我，我们会链接到这个代码
在球场上的网站 在一个位，
并请注意，我有 指数点HTM - 指数点PHP的。
因此，让我继续前进，打开 即，果然它是一种
傻，这 甚至被称为PHP
因为我的一切 是一个php评论
然后一切 仅仅是原始的HTML代码。
但是，这同样是零版本，
所以迈向一步 更有趣的东西，
但是请注意，我硬编码CS50 作为标题，CS50在H1，
现在我有 讲座链接，
现在我有教学大纲的链接。
好吧，这么说不对 似乎一切不合理
直到你跟着像一个链接 听课，你知道
所有的权利是不同的 的内容，但它是一种
同样的事情;这是一个标题 页面和无序列表中。
我按零一周 去年，它的那种
同样的事情，一个h1 标签和无序列表
然后最终我点击 这一点，我也得到一些叶子，
这是从滑动 特定的讲座。
所以东西告诉我 我即将畏缩。
如果我打开讲座 点PHP的通知
这几乎是复制和 从以前的文件粘贴;
我只是改变了标题 H1，以及这些链接。
更糟糕的是，如果我去 成周零点PHP，
它是相同的复制粘贴工作
只需一点点 内容扭捏。
所以肯定有一个 机会在这里提高，
并肯定这应该 是一个很好的经验法则;
任何时候你感觉 复制自己
和粘贴的东西 以上也许一次，
红旗应该 希望开始熄灭。
但是，我们如何去 关于改善呢？
嗯，有几个方法，和 您可以使用技术
在PHP已经发展了 时间，而是让我们试试这一个。
让我走进版本之一， 这使下一次迭代，
让我来试试 清理了一下。
右，一个PHP的 最简单的机制
用于解决该问题的是 老同学需要的功能，
这几乎做了副本 及的内容粘贴
有些文件在这里的， 像c是尖锐包括，
和其他语言有 非常相似的结构。
所以看起来有点 现在奇怪的，
这绝对不是一个 完成寻找网页，
但据推测什么 里面的头点PHP的。
所有其他的东西，对吧， HTML标记，头部标记，
标题标签，所有的东西 这是上面的主要精髓
的页面，这可以说是 只是无序列表，
和页脚可能是 像封闭body标签，
关闭HTML的标记; 很无趣
但重复的东西。
所有的权利，确保 够了，如果我去
成头点PHP的，它只是 一种孤儿片段
从顶部，如果我 进入页脚点PHP，
它是孤立的 片段从底部
我使用那些相同的 在我的其他文件片段，
像讲课点PHP的。
好吧，有什么更好的 关于这个，你会说什么？
是吗？
>>简单。
>>简单？
我不知道这种长相 很多可怕到我现在，对不对？
>>如果我想改变你的 头，你不会有
在所有的更改 以前的文件一样。
你只需要改变它 在你的头。
>>没错，所以也许在 这个意义上它是简单的，
也许我会镜框，因为它是 只是它更容易更新。
这也许有点吸尘器
因为你更新 它在一个地方。
所以这是相当 引人注目;什么是缺点
这种方法或 有什么问题遗骸
我们还没有真正解决了吗？
是吗？
[关话筒评论]
是的，没错，我的意思是，我 还是复制和粘贴;
这是少一点，但我只 拉起两个这样的文件，
他们几乎 看上去仍然是相同的。
有一个需要在 顶，一个需要在底部，
和无序 列表中的中间
它本身仍 在结构上是相同的。
此外，注意到这一点，如果我 其实看到这个例子，
让我去一个版本现在，
并注意我有 CS50讲座课程。
嗯哦，CS50周周零 一个和CS50周三周五，
那种我剪了一个角落里。
是什么 - 是什么 以前这些头衔？
[关话筒评论]
他们就像在讲座 周零，就像是那种
的性感，它实际上 有一些动力吧，
这是一种 - 我 只是那种现在撑船
而只是假设 整个网站是CS50
和好它的工作原理，但它的 肯定不是一样优雅
排序或直 转发因为它曾经是，
但是这是有道理的，因为 如果你看一下指数点PHP
和讲座PHP点 而周零点PHP，
他们都包括 相同的文件，
那么我们如何才能改善呢？
什么是下一个迭代 这段代码可能打算怎么办？
[关话筒评论]
是的，没错，所以如果 - 让我总结
与我们基本上希望 参数化的头
所以，是的还是有 硬编码h1标签，但东东
在两者之间，开 和结束标记，
大概是动态的，并 从别的东西来。
也许“获取字符串”或 之后的事情问号
在URL中是什么地方 否则，让我们一起来看看。
所以，如果我进入两个版本，
现在注意，我 得到了一个额外的文件，
它看起来像佣工点PHP的。
我真的不知道在哪里 开始，所以我要开始只是
在索引一样一如既往的，现在 注意它是一个有点不同的，
所以我有一个要求行
在要求最 佣工点PHP，
但我可以把它 我想做的事情，
但现在发现三线 有一个函数调用
渲染报头，这是 只限于有趣
因为什么被传递 显然，自定义标题
对于这个特定页面。
同时还有渲染 页脚的底部，
我不需要任何 参数化有它只是
一个页脚，但现在似乎有
是走向美好的一步 解决方案，使头部需要，
什么做的平方 括号表示对那些
没见过谁的PHP 或曾经在一段时间？
[关话筒评论]
是的，它是一个数组。
这是一个关联数组或 一个哈希键关联
与价值观;它是像Java 脚本，异议符号，
或其他语言， 类似syntaxs。
好吧，那么什么是 在佣工点PHP？
在佣工点PHP是 只是一对夫妇的功能，
渲染页眉和页脚呈现。
因此，几个细节 如果不太熟悉，
所以首先是事实
这使头需要 数据论证这显然
分配空 数组有意味着什么？
是什么意思做的equals 打开支架闭合支架
在PHP参数？
它的默认值。
所以，如果我没有通过在阵列 或承担任何参数
到渲染页眉或 渲染页脚功能，
我至少可以信任的 这些函数作者
这些数据将最小 是一个空数组;
它不会被不确定的或 假的，或者类似的东西，
这将是什么 我把它作为默认值。
现在，这是一个有点排序的 加载符号的的hackish方式
到你的名字空间 可以这么说，
但它工作得 以及朝着这个目标
实现我们自己的几分之 穷人的模板引擎。
好吧，有很多的 工具，在那里的蟒蛇红宝石
和php，让您 模板功能
而这正是我们想要的。
我们希望，有一个模板 H1开放标签，H1标签关闭，
样的，有地方 夹持在中间，
我们要填补这些地方 在此函数的方式持有，
所以这个功能 提取只是恰巧
给你以下 能力。
如果你有一个关联 数组的键值对
类似foo等于bar，提取 将创建一个局部变量
所谓有效的美元符号 foo和给它棒的价值
所以它爆炸的关联 从键值对数组
与新变量 相应的值。
然后需要点报头 点PHP是和以前一样，
还等什么，我们可能将 看到标题点PHP里面？
它可能得到的h1标签 和结束标记;这是怎么回事
是它的内部 大概在这间？
[关话筒评论]
没错，有可能是一些 提及美元符号称号
果然，如果我放大 在这里面是我的标题标签，
还有我的h1标签，以及里面 它是一个动态的插入
的美元符号头衔，但 只为好措施，
我做这个网站的特殊 充电残暴命名
功能，但它的 有用的;它有什么作用
或者这是什么对保护？
这实际上是一个解决方案 到威胁你暗示;
你会带领我们。
[关话筒评论]
没错，所以如果一个恶意的 用户或不知情的受害者
网络钓鱼攻击 点击一个链接
在自我有一个问号 和一些类似foo等于，
然后将该值 富竟是
像开放式支架 脚本，封闭的支架，
然后一些JavaScript代码;
如果你没有把这种 长的主要功能，
你究竟会传染 原始的HTML到您的网页，
其结果是 你可能会被欺骗。
你可能会欺骗用户 进入执行JavaScript代码
他或她做 实际上并不打算。
而且即使平时 你只是伤害自己，
好像只有你知道的 白痴是要输入
在开放式支架脚本， 封闭的支架，并提醒说，
或者类似的东西 做他或她自己
在与一些奇怪的结果， 如果你得到被骗
点击进入，有一个链接 生的JavaScript嵌入其中
作为该属性的值，
你还可以在其他的事情 偷别人的饼干
因为有一个属性 所谓的文件点饼干
在JavaScript中，让您 抢用户的会话cookie，
如果你还记得什么 会话劫持攻击，
长话短说，这是1 这样实际上欺骗某人
为使您的虚拟 邮戳及再服用
在他们的Facebook帐户 或一些其他类型的帐户。
好了，所以这 是有点长，
但它只是使用 原始的HTML代码。
这相当于 调用回声
或有效地打印， 我们基本上插入
动态。
那么，更多的仍然在这里？
好吧，让我进入 版本三在这里，
我们会看到一个有点 不同的 -
完全相同的文件布局 但通知
这一次，我们要 概括页眉和页脚
为模板，还等什么 我的意思是什么？
什么是一件事 这是不同的吗？
自从发生了什么变化 最后的版本？
微妙的，但它可以说是 只是一个更好的更清洁的设计。
是吗？
[关话筒评论]
是啊，有只有一个 标准的渲染功能;
我没有特殊的情况下渲染 页眉或页脚渲染，
这两者，如果你 从佣工召回点PHP，
我们几乎相同 除了他们的名字
他们包括模板。
为什么不直接参数化 渲染功能
并采取一个参数，那就是 该模板的名称，
和第二个可选参数 这是键值对
要插上电源。
所以，如果我现在看 佣工点PHP的通知
说我是一个 小票友了。
实际上，我做检查的 文件存在，如果这样继续下去
并要求它;万一 用户无意中类型
在一些伪造的模板名称你 不想抛出一个错误
在程序中，所以我们可以 最低限度地做他们这
看好这里。
所有的权利，但我们可以 借此一步？
在这个版本在这里 注意以下内容。
我刚才输入ls和 什么，立刻跳
出有一定的差别。
因此，有两个目录， 右，
所以这是现在朝向一个步骤 什么最终将成为一个更
适当的框架。
这是有点草率 我被抛出所有
我的里面的内容 公开访问的目录
从字面上被称为公众。
并且即使不幸的是， 很多框架，
旧的特别， 甚至有些网站的文章，
梦想当中主机，力 你把所有的文件
中的一个的等效 公共目录，即使
如果你的文件可能 包括数据库密码
和用户名或 其他类似的凭证，
这不是在所有好的设计。
更好的是只放
在公共目录 什么是绝对有
是用户可访问的， 和其他一切
您正在包括 像佣工点PHP，
没有理由认为该 应该是通过网络访问一个
浏览器的URL。
这可能是完全无害 如果用户想要看到也许
谁对，但它只是 它的原理，
上帝保佑它实际上 有一个用户名或密码;
你不想要的 用户不小心
或故意表现 能够访问它。
所以我们不太在 在这里完美的方法，
但现在注意到以下几点。
在指数点PHP，请注意 我仍然需要帮手，
但我做了这样的方式 那种说我组织全体
该文件是 将包含
成所谓的子目录 通常包括：
然后我打电话给渲染 头和以前一样页脚。
因此，唯一的事情 我所做的就是排序
的重新安排我的目录 要多一点肛门
有关该文件的结构。
但是，如果我们现在去 此第五示例中，
看到这里，我们现在 有文件夹的三人，
这是一个位 此刻的误导
因为简单 为了类，
我刚刚抛出一切
到约翰·哈佛的 公共目录只是
所以我们可以通过它浏览 一个浏览器，而是通知 -
忽略这部分 只是一瞬间，
事实上，我在那里。
请注意，我有三个 子目录：大众，
模板，并包含。
现在的想法是，在一个 正确配置的Web服务器I
会告诉Apache，这 网站有公开访问
文件在这里，和别的地方。
所以，你认为是什么文件 我要去看看里面
公众如果我输入ls？
什么是至少一个文件 这可能是在那里？
[关话筒评论]
好吧指数点PHP和 哪些文件显然是不
在那里等等？
像佣工点PHP，头 点PHP，页脚点PHP;
所有的片段， 所有的功能
这并不真正需要的 是可公开访问的，
它需要，也可以使用 通过将文件
是可公开访问的， 但他们自己，
没有用户需要看到或QUIRE 为佣工的URL点PHP的。
请注意，而不是如果我去
成包括有 佣工点PHP，
如果我进入模板，
有页脚和 头点的PHP。
坦白地说，我可以把 他们在同一个目录下，
但我想会更 更多关于肛门保持文件
那些只是有点 静态模板不同
从功能的文件 像佣工点PHP，
而我只是坚持一些 相当普遍的约定
调用目录 包括和模板。
因此，唯一的事情， 改变然后再是路径。
如果我们在这里通知 我现在只是有
以包括一个相对的目录，
点点斜杠包括 佣工点PHP，
或者我可以多一点 适当的和实际做的东西
这样，PHP和很多
语言有 这些特殊符号
这代表了 当前文件所在的目录，
所以下划线下划线目录 下划线下划线代表
任何目录 是这个文件的，
所以，如果你只是串连 用点操作符，即，
这将实现 同样的结果，
并且往往是多一点 健壮，因为你可以得到
与相对情况 目录只是说点
或点点实际上可以 带您到错误的地方，
所以这往往是 多了几分稳健。
好吧，那又怎样 虽然遗体？
你还在做 不喜欢这个？
有什么可以改进你 早些时候我觉得谈到这
那还是有一些问题？
[关话筒评论]
对了，想必大家没有 开始写类似的网站
看起来像这样，对吗？
这不觉得 所有的东西更好，
还是有复制粘贴。
我仍然有 要求在最上面一行。
我仍然有渲染 标题渲染页脚。
有很多重复的。
是吗？
[关话筒评论]
是的，没错，所以我们已经采取了 加强对排序分裂
从该的“C”“V”，所以 MVC是模型视图控制器;
控制器是排序的 该应用程序的大脑。
模型往往是数据 或者一些共享功能，
和视图往往是 美学，模板，
所以我们已经迈出了一步 从“V”分离的“C”
因为我们现在至少有 此模板的目录，
但即使在那里，我们基本上 每个文件只有一个控制器。
它看起来并不像有 多逻辑会在这里，
但指数点PHP是 有效的控制器。
当你访问一个URL， 在指数点PHP结束，
所有的逻辑那 实现了该网页是正确的
在指数点PHP和 同样的讲课点PHP的。
同为周零点PHP的。
样的，所以我们已经strone我们 逻辑所有的地方，
而且感觉像 这是不会
规模非常好，一旦我们 有不是四个而是40页
如果每个页面开始 我复制了旧版本
文件和刚 有些扭捏
的它里面的内容。
因此，我们只能采取 朝着这个了一步，
和的工具之一 我们将介绍
上周三是一个 成帧器称为“Laravel”
这是很 流行的PHP框架，
其他的包括“Fuelphp。”
这里有一个旧的一个 所谓的“笨”。
有一个叫“蛋糕”。
有一个叫“交响曲”。
我的意思是，如果你谷歌 PHP框架，
有一个残暴 像框架数
人们实施了。
Laravel是一个 更多和来者不拒;
它是清洁器中的一个 的人，你会发现
最终它帮助 节省你不少
的时间，即使有 一个学习曲线，
但是，我们将引导 你在上周三。
此外，我们将介绍 什么所谓的“ORM”。
在这种情况下，我们将使用 东西来
与此框架 所谓Laravel。
这就是所谓的“口才”和 这仅仅是一个代码层
使您可以在其他 东西跟数据库。
这里也一样，让我偷 例如，要么是近期
或为倒退 50你们中的一些。
如果你没有把50和 你做了“CS50财经”
你可能还记得文件 你写或重写了，看起来
像这样，这是登录 点PHP，并在时间，
特别是因为我们 没花多少时间
关于PHP的基本面早期，
这本身可能有 是相当具有挑战性的，
所以我们做的，其实， 尽量简化设计。
我们并没有真正分开的“M” 从“C”，“V”所有的东西
针对问题， “七CS50财经”
但要注意的一件事 这应该有希望启动
很快擦你的错 路，是这样的。
我的意思是，这不仅是 登录点PHP的控制器。
也有人直接对话
到数据库具体 使用续集，这是不会
规模非常好，当 你开始一个工作
或两个或三个合作伙伴。
例如，如果一个 合作伙伴负责
创建您的 数据库表和未来
与您的索引 和辩别
出了什么键应该可以， 主键，外键，
而所有这一切，决定 表名和所有的。
现在，你的其他人 本集团需要知道所有
的设计决策，他或 她做了，你现在需要
硬编码这些决定 为您的文件，所以现在他
或者她是漂亮 的局限
永远不会再改变 那些表名。
永远不会再改变 那些名字申请
没有通知你。
此外，你不能真正 在同一个文件轻松工作
无碰撞 与对方，如果他
或者她是不断 改变名称，
和你有旧的 版本等等，
所以这只是邀请 很多很多的麻烦。
此外，我们将 看用不了多久，
即使你并不需要
做特别 这里复杂的查询，
一旦你开始有多个 表，这两个表，三，五，
十张桌子在MySQL或 通常是一个关系数据库，
你必须参加这些表 通常，如果熟悉了，你有
将数据从合并 1与其他
坦白地说你的续集查询 开始变得更长，并且越长，
和更长的时间，并且更 复杂的，它只是开始
得到了很多容易 犯错误
和很多难以 正确的事情。
而像这样的工具 雄辩和ORM是怎么回事
帮助我们我们的模型和数据 它也有效地去
生成代码，我们 需要开始查询数据库
在更复杂的方式。
所以，如果你已经有了一个主键 在这里和一个外键
在这里，所有你需要的 做的是教的ORM，
对象关系映射器， 那是什么关系
它会找出什么 查询为您执行。
而且，只有在极少数 情况下，你需要
到一定写 续集代码自己。
如果你真的想 微调的东西，
但在大多数情况下，你可以 刚开始治疗实体
在你的数据库为真 对象和这些不平坦的行
你莫名其妙地需要 重建和德正常化。