LAMP

LAMP是基于Linux,Apache,MySQL和PHP的开放资源网络开发平台,PHP是一种有时候用Perl或Python可代替的编程语言。这个术语来自欧洲,在那里这些程序常用来作为一种标准开发环境。名字来源于每个程序的第一个字母。每个程序在所有权里都符合开放源代码标准:Linux是开放系统;Apache是最通用的网络服务器;MySQL是带有基于网络管理附加工具的关系数据库;PHP是流行的对象脚本语言,它包含了多数其它语言的优秀特征来使得它的网络开发更加有效。开发者在Windows操作系统下使用这些Linux环境里的工具称为使用WAMP。

虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响较大的开源软件,拥有很多共同特点,这就导致了这些组件经常在一起使用。在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,已经创建了某些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了这些产品。Linux操作系统、Apache服务器、MySQL数据库和Perl、PHP或者 Python语言,这些产品共同组成了一个强大的Web应用程序平台。

随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.

OOP

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:

组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。

抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。

封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。

多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。

继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。

由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。

MVC

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。

视图 :视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型 :模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器 :控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。

现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

ORM

对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

CURD

CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。它代表创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。CURD 定义了用于处理数据的基本原子操作。之所以将CURD 提升到一个技术难题的高度是因为完成一个涉及在多个数据库系统中进行CURD操作的汇总相关的活动,其性能可能会随数据关系的变化而有非常大的差异。

CURD在具体的应用中并非一定使用create、update 、read和delete字样的方法,但是他们完成的功能是一致的。例如,ThinkPHP就是使用add、save、select和delete方法表示模型的CURD操作。

ActiveRecord

ActiveRecord也属于ORM层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

ActiveRecord的主要思想是:

1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field;

2. ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;;

3. ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑;

ActiveRecord比较适用于:

1. 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时, ActiveRecord是非常方便的,即你的业务逻辑大多数是对单表操作;

2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script),把跨表事务提升到事务脚本中;

3. ActiveRecord最大优点是简单, 直观。 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器使用就更方便了;

这些优点使ActiveRecord特别适合WEB快速开发。

单一入口

单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项目的所有功能操作都是通过这个入口文件进行的,并且往往入口文件是第一步被执行的。

单一入口的好处是项目整体比较规范,因为同一个入口,往往其不同操作之间具有相同的规则。另外一个方面就是单一入口带来的好处是控制较为灵活,因为拦截方便了,类似如一些权限控制、用户登录方面的判断和操作可以统一处理了。

或者有些人会担心所有网站都通过一个入口文件进行访问,是否会造成太大的压力,其实这是杞人忧天的想法。

php程序员应该懂的几个基本概念相关推荐

  1. PHP笔记——java程序员看懂PHP程序

    PHP笔记--java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=" ...

  2. java前台界面设计_前端程序员要懂的 UI 设计知识

    前端程序员要懂的 UI 设计知识 疯狂的技术宅 前端先锋 翻译:疯狂的技术宅 作者:Per Harald Borgen 来源:freecodecamp 正文共:1401 字 预计阅读时间:5分钟 作为 ...

  3. 为大家整理一波程序员才懂的扎心图片!看不懂别说自己是程序员!

    程序员真的是世界上一种独特的生物男人.女人.程序员 今天为大家整理了一波程序员才懂的扎心图片! 工作前vs工作后 自己眼中vs别人眼中 期望vs现实 有人问过,"HTML CSS 和 Jav ...

  4. 【程序员才懂的梗】全程高能 爆笑硬核 你中了几个 | 程序员的日常 搞笑瞬间

    只有程序员才懂的梗,搞笑硬核,非战斗人员很难get到点上. 内容过于真实,看看你中了几个. 友情提示:上班摸鱼,注意音量. 程序员才懂的梗 还有更多程序员梗图memes,博君一笑. 这是不是你封装的接 ...

  5. 程序员才懂的58张图片,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

    导读:春节快到了!你的假期都安排上了吗?今天我们就用这些程序员才懂的幽默,给你拜个早年吧! 来源:程序员最幽默(ID:humor1024)编译配字 01 Java VS C++ 02 功能先上了再说 ...

  6. 盘点2018程序员才懂的100个段子/搞笑图(上篇)

    本来打算发100道算法题送给大家庆祝元旦,后来想了想对大家太残忍了.所以就换成了100个程序员才懂的段子和搞笑图:因为篇幅过长就分成了两篇,今天是上篇,明天发下篇. 段子系列(上篇/25个) 0. 顺 ...

  7. 做程序员必须懂英语吗?_您必须懂英语才能成为程序员吗?

    做程序员必须懂英语吗? An interesting comment thread broke out in a recent post on Using Crowdsourcing for Expa ...

  8. 60 个程序员才懂的梗!太形象了!

    说到程序员,在外界眼里,他们是掌控代码的大神,他们是改变世界的王者.其实程序员并没有大家想的那么光鲜,活多钱少压力大:导致众猿(媛)在自黑.自嘲的路上越走越远:一起来看一下那些只有程序员才懂的梗... ...

  9. 程序员年入百万指南(二)之为什么程序员应该懂点销售

    本文为[程序员年入百万指南]系列之VOL.2 为什么程序员应该懂点销售 作者:胡嵩 提起销售,各位同学是不是头脑中立刻浮现出四个大字:                                 ...

最新文章

  1. 8月数据库排行榜:SQL Server分数下降最多
  2. 基于python的聊天室_Python实现文字聊天室
  3. java中怎么判断一段代码时线程安全还是非线程安全_24张图带你彻底理解Java中的21种锁...
  4. SIP for android
  5. Why Not Specialize Function Templates?
  6. xubuntu16.04是linux系统,win10建立Ubuntu16.04子系统,安装经常使用软件以及图形界面(包括win10远程桌面链接Ubuntu)...
  7. 零基础入门语义分割——Task2 数据扩增
  8. Oracle学习笔记:手工注册oracle的oledb驱动
  9. JAVA发送邮件(163邮箱发送)
  10. Maya2020入门:标题栏+菜单栏+状态栏
  11. ubuntu安装文泉驿字体
  12. xp桌面计算机在哪个文件夹,XP电脑的桌面背景在哪个文件夹?
  13. C#中IntPtr打印输出
  14. 安装imageAI:
  15. TH75 V2 双模蓝牙5.2热插拔PCB
  16. 无线鼠标指针乱跑一种解决方案
  17. 律师学python有什么用呢_《律》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  18. IDEA修改中文字体为微软雅黑
  19. 2022.03全国青少年软件编程(图形化)等级考试试卷(四级)
  20. angularJS1 异常Error: [$injector:unpr]

热门文章

  1. Mockito 简明教程
  2. snmp agent
  3. sql存储过程的创建
  4. HDU 4831 Scenic Popularity 暴力模拟
  5. 开机后将sim/uim卡上的联系人写入数据库
  6. 利用oracle快照dblink解决数据库表同步问题
  7. Linq to sql查询句法
  8. Windows10 yolox 安装
  9. DeskArtes 3Data Expert Ultimate中文版
  10. ResultSet 的相关介绍