PHP基础学习
·概述:
学习PHP的目的是为了扩展服务器端开发能力。而且通过学习web端服务器开发也可以算是很好的学习。
感觉语言的学习都是这样的过程:基础知识、高级特性、标准库学习和扩展库的学习。而最好的学习方法是多动手多写代码啦。
基础知识有:注释和说明、变量和常量、类型系统、操作符系统、流程控制、文件读写、数组说明、字符串操作和正则表达式、函数系统、面向对象功能和错误异常控制。
最后谈谈对PHP的感受:在语法方面PHP借鉴了很多C++元素,所以学习起来还算好了,最起码比看erlang强太多了。在就是对PHP的工作原理的理解:因为原先写过简单的服务器,感觉apache/nginx负责了所有的底层工作比如网络、同步等问题,而PHP则是专门处理逻辑处理部分。这样的话,感觉比我原先写服务器轻松多了--可能两个工作的侧重点不同吧。
·要点:
--注释和说明:
文件后缀一般是.php或.inc(include的缩写)。
php可以嵌入到HTML中,标记风格有:
(xml风格--推荐使用);
… ?>(简短风格);
(SCRIPT风格);
(ASP风格)。
对空格的处理:同HTML一样PHP也忽略空格字符--回车、空格、Tab。
注释:
单行://和#。
多行:/* … */方式。
php的语句跟C++一样也是以;作为结束标记。
访问表单变量的方法:
简短风格?$tireqty,方便需要服务器配置,不推荐。
中等风格?$_POST['tireqty'],推荐使用。
冗长风格?$HTTP_POST_VARS['tireqty'],已弃用。
echo用于回显输出;
字符串连接操作符是点(.)。
其中字符串表示的单引号和双引号是不同的:单引号表示文本含义即不做处理的输出(极个别的转移),而双引号会处理字符串--处理转移等。
--变量和常量:
标识符--跟C++的命名一样:
长度不限但不建议太长;
由字母、数字和下划线组成,但不能以数字开始;
区分大小写,但函数名不区分大小写;
变量名可与函数名同名--强烈不推荐。
变量名的格式如$arge,需要$前缀。
常量的定义: define('TIREPRICE',100);(推荐字符全大写)
可以使用可变变量: $a='feng',$$a等价于$feng。
变量的作用域:
超级全局变量:比如$_POST等在整个脚本可见;
常量也是全脚本可见的;
脚本中定义的变量是脚本可见的,但函数内不可见;
函数内定义的变量是本地的,函数外不可见;
可通过关键字global定义在函数内外都可见的全局变量;
常用的超级全局变量有:
$GLOBALS,所有全局变量数组;
$_SERVER,服务器环境变量数组;
$_GET,通过GET方法传递给脚本的变量数组;
$_POST,通过POST方法传递给脚本的变量数组;
$_COOKIE,cookie变量数组;
$_FILES,与文件上传相关的变量数组;
$_ENV,环境变量;
$_REQUEST,所有用户输入的变量数组,包括$_GET,$_POST,_COOKIE.
$_SESSION,回话变量数组。
--类型系统:
支持的类型有:整数、浮点数、字符串、布尔值、数组和对象。
支持的特殊类型有:NULL(表示未赋值等)和resource(一种在函数间传递的数据结构,比如说打开的文件、数据库的连接等)。
类型之间的转换是使用的C风格$a=(float)10。
同时可以使用内置的函数来进行类型转换。
对于字符串:有单引号风格和双引号风格。字符串有相应的操作函数和操作符。
内置对类型支持函数:
gettype()和settype()可测试和设置变量类型;
相关判断还有is_*()系列函数;
isset()--测试是否定义和unset()--删除变量;
变量转换:intval(),floatval(),strval()。
--操作符系统:
算术操作符:加(+)减(-)乘(*)除(/)和取余(%);
字符串操作符:点操作符(.);
赋值操作符:=和混合赋值操作符(+=,-=,*=,/=,%=和.=);
递增和递减操作符:与C++是一样的有前缀形式和后缀形式;
引用语法:在变量前使用地址符(&);
比较操作符:相比C++(==,!=,,>=)增加(===,!==,);
逻辑操作符:符号(!,&&,||)和字符形式(and,or,xor);
位操作符:&,|,~,^,>(不常用);
其他操作符:
三元操作符:形式是 condition ? true : false;
错误抑制操作符:在语句前使用@符号;
执行操作符(执行终端命令): 使用符号反单引号--在键盘上1旁边;
数组操作符:使用符号[];
类型操作符:使用instanceof来操作;
操作符的优先级和结合性跟C++类似。
--流程控制:
条件:
if语句形式:if(cond){}elseif(cond){}else{};
switch语句,跟C++相同;
循环:
while,for和do…while跟C++是一样的;
对数组还提供了foreach循环语句的支持;
跳出:
除了break,continue外还增加了exit--推出脚本;
可替换形式:
不实用花括号而使用字符,如if(cond) … endif形式;
使用可替换形式的有:if,switch,while,for和foreach;
使用declare:
不常用,但其中的ticks需要学习使用;
--文件读写:
常用函数:
打开文件:fopen(),其中可选择打开文件模式;
关闭文件:fclose()函数;
读文件:fread(),file_get_contents(),fgets(),fgetss(),fgetcsv(),
readfile(),fpassthru()和file(),fgetc();
写文件:fwrite(),file_put_contents();
删除文件:unlink();
控制函数:
文件状态判断:feof(),file_exists(),filesize()
锁定文件:flock();
文件读写指针操作:rewind(),fseek()和ftell();
--数组说明:
跟C++中的数组概念不同,有点向Python中的字典类似;
数字索引数组:
数字索引是从0开始的,定义形式是使用array()形式;
自动生成数组的函数有range();
可使用foreach()来循环遍历数组--数字索引和非数字索引同样使用;
foreach()的语法是foreach($array as $key => $value);
数组操作符:+,==,===,!=,,!==;
可以定义多维数组;
数组排序函数:
支持函数sort(),asort(),ksort(),rsort(),arsort()和krsort();
多位数组usort()需要用户定义比较函数并作为参数;
对数组的随机排序:shuffle()函数;
将数组反序操作:array_reverse()函数;
函数file()可直接返回文本数组,之后可直接对文本数组进行操作;
其他数组操作:
数组浏览:each(),current(),reset(),end(),next(),pos()和prev();
可对数组中的每个元素都执行特定函数:array_walk();
数组统计:count(),sizeof()和array_count_values();
数组转换成标量:extract()函数;
对于非数字索引的解释:
首先要在定义上不同,其次是在访问方式不同导致的遍历方法的不同;
同时其他的数组函数还是适用的;
--字符串和正则表达式:
字符串函数:
格式化:rtrim(),ltrim(),trim(),nl2br(),printf(),sprintf(),vsprintf(),
strtoupper(),strtolower(),ucfirst(),ucwords(),
addslashes(),stripslashes();
连接和分割:explode(),implode(),join(),strtok(),substr();
比较:strcmp(),strcasecmp(),strnatcmp(),strlen();
匹配和替换:strstr(),strchr(),strrchr(),stristr(),strpos(),strrpos(),
str_replace(),substr_replace();
正则表达式:
待定;
--函数系统:
引入文件:
可使用require()和include()函数来引入文件;
变体函数require_once()和include_once()--确保只引入一次;
使用服务器配置auto_prepend_file和auto_append_file配置页眉和脚注;
使用函数:
函数调用方式与C++等其他语言调用方式一样--指非成员函数;
调用未定义的函数会得到错误信息;
函数名是不区分大小写的;
同时要注意的是函数名没有$前缀;
自定义函数:
定义函数语法:function func_name($arg1,$arg2){…}形式;
参数也分为传值(默认)和传引用(加前缀&且符合引用语义)两种方式;
返回值用renturn语句;
可以使用递归,但从性能上考虑不建议使用;
命名空间问题:
php中可以使用命名空间--待深入学习;
--面向对象:
类与对象:
类定义方式:class classname{…}形式;
访问控制符有public(默认),protected和private;
类的实例化(对象)方法:$a=new classname(参数)的形式;
构造函数(__construct())和析构函数(__destruct())形式;
可以使用$this指针--表示对象本身;
可以定义__get()和__set()两个函数--访问器和设置器;
类属性和方法的访问符号是箭头符号(->);
继承:
继承形式为使用关键字"extends"来指明继承;
不支持多重继承,可通过接口来实现多重继承的效果;
可通过final关键字禁止继承和重载--类和方法都适用;
重载--父类与子类的重载:
在子类中定义与父类同名的函数将重载父类函数;
成员函数的调用看调用对象的类型调用相应的对象;
调用父类对象的方法是使用parent::形式--但需要注意的是虽然调用的是
函数但父类函数内如果也调用重载成员的话会优先子类成员--与C++不同;
接口:
接口定义方式:interface InfName{…}形式;
实现接口需要使用关键字"implements"形式;
高级功能:
使用pre-Class常量(静态数据成员):class Math{const pi=3.14159}形式;
静态方法使用关键字"static",且通过符号"::"调用,而且没有$this关键字;
可通过instanceof检查对象的类型;
支持延迟静态绑定--待深入(没用过);
通过关键字$a= clone $b来复制对象;
而且在类中通过__clone()来定义复制函数--因为引用成员的需要;
抽象类定义方法是:抽象方法和抽象类--都加前缀"abstract";
可通过__call()来提供类方法的重载--同一个类中的重载;
独立函数__autoload():
将在实例化一个还没被声明的类时自动调用;
主要用途是尝试包含或请求任何用来初始化所需类的文件;
迭代器和迭代:
要实现迭代器,需要实现IteratorAggregate接口并定义getIterator();
需要实现复杂的行为要实现Iterator接口;
类转化为字符串:
使用__toString()函数实现;
使用Reflection(反射) API:
反射技术应该是从实例反推类结构吧;
API接口是$class=new ReflectionClass("empl");
--错误和异常:
异常:
异常机制是try{…}catch(…){…}和throw形式;
PHP为异常提供了内置的类?Exception;
自定义异常:
可自定义继承Exception来定义自己的异常;
其他错误处理机制:
除了异常处理机制外,PHP还提供了复杂的错误处理支持--待深入学习;
·小结:
基础部分完成;可以继续深入了。

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에는 4 가지 주요 오류 유형이 있습니다. 1. NOTICE : 가장 작은 것은 정의되지 않은 변수에 액세스하는 것과 같이 프로그램을 방해하지 않습니다. 2. 경고 : 심각한 통지는 파일을 포함하지 않는 것과 같은 프로그램을 종료하지 않습니다. 3. FatalError : 가장 심각한 것은 기능을 부르는 것과 같은 프로그램을 종료합니다. 4. parseerror : 구문 오류는 엔드 태그를 추가하는 것을 잊어 버리는 것과 같이 프로그램이 실행되는 것을 방지합니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

HTTP 요청 방법에는 각각 리소스를 확보, 제출, 업데이트 및 삭제하는 데 사용되는 Get, Post, Put and Delete가 포함됩니다. 1. GET 방법은 리소스를 얻는 데 사용되며 읽기 작업에 적합합니다. 2. 게시물은 데이터를 제출하는 데 사용되며 종종 새로운 리소스를 만드는 데 사용됩니다. 3. PUT 방법은 리소스를 업데이트하는 데 사용되며 완전한 업데이트에 적합합니다. 4. 삭제 방법은 자원을 삭제하는 데 사용되며 삭제 작업에 적합합니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

phpoop에서 self ::는 현재 클래스를 말하며, Parent ::는 부모 클래스를 말하며, static ::는 늦은 static 바인딩에 사용됩니다. 1. self :: 정적 방법과 일정한 호출에 사용되지만 늦은 정적 바인딩을 지원하지는 않습니다. 2.parent :: 하위 클래스가 상위 클래스 방법을 호출하는 데 사용되며 개인 방법에 액세스 할 수 없습니다. 3. Static ::는 상속 및 다형성에 적합한 후기 정적 결합을 지원하지만 코드의 가독성에 영향을 줄 수 있습니다.

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.
