源起
借来一本书,《PHP&MySQL范例精解——创建、修改、重用》。虽然是2008年出版的老书,但对与我这样的新手来说还是挺有帮助的,毕竟那些基本的设计思想是不会过时的。
目录结构设计
书中说,在开发过程中第一步是设计程序的目录结构。建议创建三个主文件夹,分别用来:
- public_files:保存可以公共访问的页面;
- lib:保存可以被其他文件调用的引用文件;
- templates:保存页面显示文件。
Web服务器只允许访问public_files下的文件,如此一来可以增强系统的安全性。
数据库设计
将使用次数很少甚至只有一次的数据单独存放在一个表中并及时删除,以避免数据冗余。例如,此书就将用户激活相关的信息单独放在了一个表中。因为这些信息只在激活时用到一次,用完即删。
编写共享代码
将共享的代码及链接数据库的代码分别存在在一个文件中,增加代码的重用度,方便其他文件调用。
User类的设计
在MVC思想中该部分属于model的设计。在设计一个类的时候应牢记,在面向对象编程中,对象即对应着生活中的实体。类的属性用于描述对象,而类的方法则用于直接操作对象或者做一些与该对象相关的操作。对于一个用户类而言,首先要有用户ID、用户名、密码等这些用户信息,是为该类的属性。再者,我们需要对用户进行查找、创建、更新信息、激活等操作,于是便有与之对应的方法来完成这些操作。
属性的重载此书使用了重载的放松来动态地创建属性。这样做的好处是若以后要新增一些属性几乎不用对代码作出改动,直接调用这些需要添加的属性,就行了。利用重载来动态创建属性与直接再代码中添加一个新的属性是不一样的。属性的重载利用了魔术方法__get()和__set()。在给不可访问属性(未定义或不可见)赋值时,__set()会被调用;在读取不可访问属性的值时__get()会被调用。一般通过__set()将重载的属性的数据保存到一个私有数组字段中,需要读取重载的属性时又通过__get()从这个私有数组字段中读取。示例代码如下:
class User{ private $uid; private $field; //initialize a User object public function __construct() { $this->uid = null; $this->field = array('username' => '', 'password' => '', 'emailAddr' => '', 'isActive' => false); } //override magic method to retrieve properties public function __get($field) { if($field == 'userId'){ return $this->uid; }else{ return $this->field[$field]; } } //override magic method to set properties public function __set($field, $value) { if(array_key_exists($field, $this->field)){ $this->field[$field] = $value; } }}
需要注意的是PHP中的重载与其他语言的不同。其他语言的重载一般是指同函数名称不同参数个数从而实现同名的多个函数。关于PHP重载的更多内容见PHP手册:重载
对数据进行验证
在对数据进行处理之前需要对数据进行验证。当数据验证为是我们期望的那样之后再对数据进行处理。否则可能会出现不可预知的错误。新手往往可能会忽视这一点。例如在PHP的代码中经常会出现检测某个量是否为空,若非空再进行操作。
动态的SQL语句
实现查找、保存等方法是需要用到动态的SQL语句。此书通过sprintf()函数来实现。sprintf()函数类似与C#中的String.Format()。然而这种方式略繁琐,个人感觉目前会有更好的方式。当使用sprintf()函数实现动态SQL时,对于较复杂的字符串参数需要使用real_escape_string()函数进行转义,以确保代码的安全性。(编码问题貌似一般和SQL注入有关)。
模板
使用模板可以将逻辑和页面设计分离。此书在这里使用了一个简单的模板:将页面各个部分的内容保存到$GLOBALS数组中,模板文件在各个部分直接输出数组的内容。因此若想动态的展示页面,只需修改$GLOBALS中的内容,再展示模板文件即可。
结语
本文是一篇简单的学习笔记,主要是帮助自己整理思路,如果能对其他人也有一些帮助就更好了~【用markdown写东西确实也挺爽的

thesecrettokeepingAphp-poweredwebsiterunningsmoothlydlyUnderHeavyloadInvolvesEveralKeyStrategies : 1) ubstractOpCodeCachingWithOpCacheTecescripteExecutionTime, 2) usedatabasequeryCachingwithRedSendatabaseload, 3) LeverAgeCdnslikeCloudforforporerververforporporpin

Code는 코드가 더 명확하고 유지 관리하기 쉽기 때문에 의존성 주입 (DI)에 관심을 가져야합니다. 1) DI는 클래스를 분리하여 더 모듈 식으로 만들고, 2) 테스트 및 코드 유연성의 편의성을 향상시키고, 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하지만 성능 영향 및 순환 종속성에주의를 기울이십시오. 4) 모범 사례는 추상 인터페이스에 의존하여 느슨한 커플 링을 달성하는 것입니다.

예, PPAPPLICATIONISPOSSIBLEADESLESTION.1) INVERECINGUSINGAPCUTERODUCEDABASELOAD.2) INCODINCEDEXING, ENGICIONEQUERIES 및 CONNECTIONPOULING.3) 향상된 보드 바이어링, 플로 팅 포르코 잉을 피하는 최적화 된 APPCUTERODECEDATABASELOAD.2)

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Dreamweaver Mac版
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기