搜尋
首頁後端開發php教程php学习笔记之基础知识_PHP

php学习至今一年有余,笔记积累挺多的,也挺杂的,写篇文章整理一下吧。

php基础部分

<font face="新宋体">PHP</font> 输出文本的基础指令:<font face="新宋体">echo</font><font face="新宋体">print</font>

echo和print的区别

<font face="新宋体">echo</font>是PHP语句, <font face="新宋体">print</font><font face="新宋体">print_r</font>是函数,语句没有返回值,函数可以有返回值(即便没有用)

<font face="新宋体">echo</font> 输出一个或者多个字符串。
<font face="新宋体">print</font> 只能打印出简单类型变量的值(如int,string)
<font face="新宋体">print_r</font> 可以打印出复杂类型变量的值(如数组,对象)

var_dump和print_r的区别

<font face="新宋体">var_dump</font>返回表达式的类型和值,而<font face="新宋体">print_r</font>仅返回结果,相比调试代码使用<font face="新宋体">var_dump</font>更便于阅读。

变量

变量用于存储值,比如数字、文本字符串或数组。PHP 中的所有变量都是以 $ 符号开始的。
PHP 变量名称对大小写敏感!

PHP 有三种不同的变量作用域:

<code>local(局部)<br>global(全局)<br>static(静态)</code>

函数之外声明的变量拥有 <font face="新宋体">Global</font> 作用域,只能在函数以外进行访问。

函数内部声明的变量拥有 <font face="新宋体">LOCAL</font> 作用域,只能在函数内部进行访问。

<font face="新宋体">global</font> 关键词用于访问函数内的全局变量。

PHP static 关键词

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。

要完成这一点,请在您首次声明变量时使用 static 关键词:

<code>function myTest() {<br>   static $x=-1;<br>   echo $x;<br>   $x--;<br>}<br>myTest();//-1<br>echo "<br>";<br>myTest();//-2<br>echo "<br>";<br>myTest();//-3<br>?></code>

php类型

<code>php类型:**PHP 支持八种原始类型。** </code>

布尔型

要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都是大小写不敏感的。

整型

我们可以使用(int)来将小数强制类型转换成整数。

<code>    var_dump((int)(26/3));//int(8)<br>?></code>

数组

php中有三种数组:

<code>索引数组:就是下标是顺序整数作为作为索引(比如第几排第几列)$class[5]<br>关联数组:就是下标是字符串作为索引(比如名字)$class2["zhangsan"]<br>多维数组 - 包含一个或多个数组的数组</code>

下标要嘛是整数,要么是字符串。

<code>$array = array(<br>    "foo" => "bar",<br>    "bar" => "foo",<br>);<br>// 自 PHP 5.4 起<br>$array = [<br>    "foo" => "bar",<br>    "bar" => "foo",<br>];<br>?></code>

数组单元可以通过 <font face="新宋体">array[key]</font> 语法来访问。
Note: 这并不意味着总是给键名加上引号。用不着给键名为常量或变量的加上引号,否则会使 <font face="新宋体">PHP</font> 不能解析它们。

数组运算符

例子 名称 结果$a + $b 联合 $a 和 $b 的联合$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE$a != $b 不等 如果 $a 不等于 $b 则为 TRUE$a $b 不等 如果 $a 不等于 $b 则为 TRUE$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE

<font face="新宋体">+</font> 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。

对象

要初始化一个对象,用 new 语句将对象实例到一个变量中。

常用函数

strlen() 函数用于计算字符串的长度。
strpos() 函数用于在字符串内检索一段字符串或一个字符。

常量

可以用 define() 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
常用的魔术常量:

定义常量例子:

<code>define("poems" , "Homeric epic");<br>echo poems ;//outputs "Homeric epic" <br>?></code>

php字符串运算符

在 PHP 中,只有一个字符串运算符。
并置运算符 <font face="新宋体">(.)</font> 用于把两个字符串值连接起来。如:echo "a= ".$a."<br>";
左边将字符串文字"a="与变量$a的值连接,第二处是与换行符<font face="新宋体">"<br>"</font>连接

php函数

函数只有在被调用时才会被执行,这点和js是一样的,同样,函数定义也是以function关键字开头的。

<code>    function sum($x,$y){<br>        $z=$x + $y;<br>        return $z;<br>    }<br>    echo "-2+10= ".sum(-2,10);//outputs "-2+10=8"<br>?></code>

当没有<font face="新宋体">return</font>语句时,以上将会变成"-2+10=";

流程控制

在这里,只讲下<font face="新宋体">foreach</font>语句。

<font face="新宋体">foreach</font>语句遍历输出数组:
语法:

<code>foreach (array_expression as $value){ statement};
foreach (array_expression as $key => $value){ statement};</code>

参数<font face="新宋体">array_expression</font>是指定要遍历的数组,<font face="新宋体">$value</font>是数组的值

<code>     $actors [0] ="Marry";<br>     $actors [1] ="Lorry";<br>     $actors [2] = "mike";<br>     foreach ($actors as $values){<br>     echo "Name:$values<br>"; <br>}<br>?></code>

以上代码将输出:
Name:Marry
Name:Lorry
Name:mike

两个重要的魔术方法

<code>    1. __set( )方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你  要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。
    2. __get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用</code>

php中方法不区分大小写

<code>require(dirname(__FILE__).'/global.php'); //引入全局文件
require(dirname(__FILE__).'/config.ini.php'); //引入基本配置文件</code>

对象运算符和双冒号运算符

在类的成员方法里面,可以用 ->(对象运算符):<font face="新宋体">$this->property</font>(其中 property 是该属性名)这种方式来访问非静态属性。
静态属性则是用 <font face="新宋体">::</font>(双冒号):<font face="新宋体">self::$property</font> 来访问。

=>和->

<font face="新宋体">=></font>数组成员访问符号,<font face="新宋体">-></font>对象成员访问符号;
<font face="新宋体">$this</font>-<font face="新宋体">>$name=$value</font>:将当前类的<font face="新宋体">name</font>变量的值设为<font face="新宋体">$value</font>;
<font face="新宋体">$this</font>代表了类本身,<font face="新宋体">-></font>是访问其类成员的操作符
双冒号运算符(<font face="新宋体">::</font>)类名<font face="新宋体">::</font>静态属性/方法
<font face="新宋体">::</font>”用来调用类中静态的属性和方法

<font face="新宋体">include()</font>:包含外部文件,语法格式为 include(string filename);
<font face="新宋体">require()</font>:会输出错误信息,终止脚本
<font face="新宋体">include_once()</font>:多次调用相同文件时,程序只会调用一次
<font face="新宋体">require_once()</font>:先检查文件是否在其他地方被调用过
<font face="新宋体">array_pop()</font>:获取并返回数组中的最后一个元素
<font face="新宋体">count()</font>:统计数组中的元素个数
<font face="新宋体">array_search()</font>:获取数组中元素的键名
<font face="新宋体">$array_keys()</font>:获取数组中重复元素的所有键名

单引号和双引号

PHP把单引号中的数据视为普通字符串,不再处理。而双引号还要对其中的字符串进行处理

get和post

$_GET[ ]和$_POST[ ]全局数组:分别用来接收GET和POST方法传递到当前页面的数据。“[ ]”里面是name.

php参数传递常用的方法有3种:$_POST[ ]、$_GET[ ]、$_SESSION[ ],分别用于获取表单、URL与Session变量的值。

表单提交中get和post方式的区别归纳如下几点:

<code>GET是从服务器上获取数据,POST是向服务器传送数据。<br>GET 是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。<br>对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。<br>GET传送的数据量较小,不能大于2KB(这主要是因为受URL长度限制)。POST传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。<br>GET 安全性较低,POST安全性较高。因为GET在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记 录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一 同显示在用户面前。POST的所有操作对用户来说都是不可见的。</code>

在FORM提交的时候,如果不指定Method,则默认为 GET请求(.net默认是POST),Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+” 号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;GET方式提交的数据最多只能有2048字节,而POST则没有此限制。POST传递的参数在doc里,也就http协议所传递的文本,接受时再解析参数部分。获得参数。一般用POST比较好。POST提交数据是隐式的,GET是通过在url里面传递的,用来传递一些不需要保密的数据,GET是通过在URL里传递参数,POST不是。

1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连

2.GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,IIS4中最大为80KB,IIS5中为100KB

HTTP状态码

cookie和session区别

cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这
个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。
会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie
保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识
(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来
使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相
关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应
中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给
服务器。
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

php代码规范

1.变量赋值必须保持相等间距和排列

2.每行结尾不允许有多余的空格

3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的

4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写

5.属性的命名只允许由字母组成,下划线是不允许的⋯⋯

6.对于对象成员的访问,我们必须始终使用“get"和"set"方法

7.当类成员方法被声明为private时,必须以双下划线"__"开头;被声明为protected时,必须以单下划线"_"开头;声明为public的成员属性则在任何时候都不允许含有下划线。

8.如果我们需要把一些经常使用的方法定义为全局函数,那么应该把它们以静态(static)的形式定义在类中

9.函数的命名使用小写和下划线,应该能够描述清楚该函数的功能。

10.Boolean值和null值都采用小写。

11.当一个字符串是纯文本组成的时候(即不含有变量),则必须总是以单引号(')作为定界符

12.使用array类型声明关联数组的时候,应将它分成多行,保证每行的键与值的对齐

13.类中所有代码都必须用四个空格进行缩进

14.不允许用var来声明变量,类成员变量必须以private,protected和public来声明。通常用get和set方法来访问类成员。

15.方法必须总是用private,protected或者public来声明其作用域

16.在函数或方法名与参数括号之间不允许出现多余的空格

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

解釋PHP 8.1中的纖維以進行並發。解釋PHP 8.1中的纖維以進行並發。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區:資源,支持和發展PHP社區:資源,支持和發展Apr 12, 2025 am 12:04 AM

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP與Python:了解差異PHP與Python:了解差異Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

php:死亡還是簡單地適應?php:死亡還是簡單地適應?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來:改編和創新PHP的未來:改編和創新Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能