首先,必须使用 class 关键字声明类对象。 类是可以包含属性和技术的结构。
然后我们在类中定义数据类型,然后在实例化的类中使用该数据类型:
<?php class Car { var $color; function Car($color="green") { $this->color = $color; } function what_color() { return $this->color; } } function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) { echo "t$prop = $valn"; } } // instantiate one object $herbie = new Car("white"); // show herbie properties echo "herbie: Propertiesn"; print_vars($herbie); ?>
空值
NULL 值表示该变量没有值。 NULL 是数据类型为 NULL 的值。
持续的
常量是简单值的标识符。 该值无法在脚本中更改。 (常量名称不需要 $ 修饰符)。
注意:常量在整个脚本中可用。
要设置常量,请使用define() 函数。 函数语法如下:
定义(字符串常量名称,混合值,区分大小写= true)
该函数有三个参数:
在下面的示例中,我们创建一个区分大小写的常量,其值为“Welcome to runoob.com!”:
字符串函数和字符串连接
操作员
"red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; // $x 和 $y 数组合并 var_dump($z); var_dump($x == $y); var_dump($x === $y); var_dump($x != $y); var_dump($x $y); var_dump($x !== $y); ?>
流程控制语句与js相同
<?php $t=date("H"); if ($t<"20") { echo "Have a good day!"; } $t=date("H"); if ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } $t=date("H"); if ($t<"10") { echo "Have a good morning!"; } else if ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } $favcolor="red"; switch ($favcolor) { case "red": echo "Your favorite color is red!"; break; case "blue": echo "Your favorite color is blue!"; break; case "green": echo "Your favorite color is green!"; break; default: echo "Your favorite color is neither red, blue, or green!"; } //循环 $i=1; while($i<=5) { echo "The number is " . $i . "
"; $i++; } $i=1; do { $i++; echo "The number is " . $i . "
"; } while ($i<=5); for ($i=1; $i<=5; $i++) { echo "The number is " . $i . "
"; } $x=array("one","two","three"); foreach ($x as $value) { echo $value . "
"; } ?>
大批
<?php $cars=array("Volvo","BMW","Toyota"); //数组定义 数值数组 echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; //访问数组元素 //数组长度count() $cars=array("Volvo","BMW","Toyota"); echo count($cars); //count() 函数用于返回数组的长度 //遍历数值数组 $cars=array("Volvo","BMW","Toyota"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "
"; } $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");//定义关联数组 echo "Peter is " . $age['Peter'] . " years old."; //遍历关联数组 $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "
"; } ?>
数组排序
PHP-数组排序函数
//sort() $cars=array("Volvo","BMW","Toyota"); sort($cars); $clength=count($cars); for($x=0;$x<$clength;$x++) { echo $cars[$x]; echo "
"; } //rsort() $cars=array("Volvo","BMW","Toyota"); rsort($cars); //asort() arsort() 关联数组排序 value $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); asort($age); arsort($age); //ksort() krsort() 关联数组排序 key $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); ksort($age); krsort($age); ?>
超级全局变量
PHP 中预定义了几个超全局变量,这意味着它们在脚本的所有范围内都可用。
$GLOBAL 是包含所有变量的全局复合字段。 变量名是字段键。
$_SERVER 是一个包含标头、路径和脚本位置等信息的字段。 该字段中的项目由 Web 服务器创建。 不保证所有项目在每台服务器上都可用;
<?php echo $_SERVER['PHP_SELF']; // /try/demo_source/demo_global_server.php echo "
"; echo $_SERVER['SERVER_NAME']; // runoob.com echo "
"; echo $_SERVER['HTTP_HOST']; // www.runoob.com echo "
"; echo $_SERVER['HTTP_REFERER']; //来由 echo "
"; echo $_SERVER['HTTP_USER_AGENT']; //浏览器 echo "
"; echo $_SERVER['SCRIPT_NAME']; // /try/demo_source/demo_global_server.php //另外$_SERVER对象还包括 SERVER_ADDR, SERVER_PROTOCOL ,REQUEST_METHOD..等属性 ?>
$_REQUEST 用于收集 HTML 表单提交的数据。
<form method="post" action=""> Name:
$_POST广泛用于收集表单数据,在HTML表单标签中指定该属性:“method=”post”
<form method="post" action=""> Name:
$_GET 也广泛用于收集表单数据,在 HTML 表单标签中指定此属性:“method=”get”。
$_GET 还可以收集 URL 中发送的数据。
Test $GET //test_get.php
PHP 函数
PHP 的真正力量来自于它的功能。
PHP 中提供了 1000 多个内置函数。
<?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); //函数传参 function writeName($fname,$punctuation) { echo $fname . " Refsnes" . $punctuation . "
"; } echo "My name is "; writeName("Kai Jim","."); echo "My sister's name is "; //函数返回值 function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 = " . add(1,16); ?>
魔法变量
有八个神奇常量,它们的值根据它们在代码中的位置而变化。
在 PHP 4 中,该值始终为大写。 类名包括声明它的范围(例如 FooBar)。 请注意,自 PHP 5.4 起,CLASS 也适用于特征。 当在特征方法中使用时,CLASS 是调用该特征方法的类的名称。
<?php class test { function _print() { echo '类名为:' . __CLASS__ . "
"; echo '函数名为:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); ?>
特征名称包括声明它们的范围(例如 FooBar)。
从子类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法覆盖。 它的行为方式与 MyHelloWorld 类中定义的方式相同。 优先顺序是当前类中的方法覆盖特征方法,而特征方法又覆盖泛型中的技巧。
sayHello(); ?>
命名空间
PHP命名空间(namespace)是在PHP 5.3中添加的。 如果你学过C#和Java,那么命名空间并不是什么新鲜事。 然而,它在PHP中仍然具有非常重要的意义。
PHP 命名空间可以解决两类问题:
默认情况下,所有常量、类和函数名称都放置在全局空间中,就像以前 PHP 支持的命名空间一样。
如果文件包含命名空间,则必须在所有其他代码之前声明命名空间
声明命名空间之前唯一合法的代码是定义源文件编码的声明语句。 所有非 PHP 代码(包括空格)不得出现在命名空间声明之前。
以下代码会产生语法错误:
<?php namespace MyProject; // 命名空间前出现了“” 会致命错误 - 命名空间必须是程序脚本的第一条语句 ?>
子命名空间
命名空间使用
PHP 命名空间中的类名可以通过三种方式引用:
非限定名称php使用,或没有前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。 如果当前命名空间是 currentnamespace,则 foo 将解析为 currentnamespacefoo。 如果使用 foo 的代码是全局的,代码不包含在任何命名空间中,那么 foo 将被解析为 foo。 警告:如果命名空间中的函数或常量未定义,则未限定的函数或常量名称将解析为全局函数或常量名称。 ~~没有命名空间前缀的引用默认在当前命名空间中搜索,然后在全局命名空间中搜索
限定名称或包含前缀的名称,例如 $a = new subnamespacefoo(); 或子命名空间foo::staticmethod();。 如果当前命名空间是currentnamespace,foo将被解析为currentnamespacesubnamespacefoo。 如果使用 foo 的代码是全局的,代码不包含在任何命名空间中,foo 将被解析为 subnamespacefoo。 ~~带有相对命名空间前缀的引用(类似相对路径),自动在开头添加调用代码所在的命名空间
完全限定名称或包含全局前缀运算符的名称,例如 $a = new currentnamespacefoo(); 或 currentnamespacefoo::staticmethod();。 在这些情况下,foo 总是被解析为代码中的字面名称(literal name)currentnamespacefoo。 ~~带有绝对命名空间前缀的引用(类似于绝对路径) 引用路径清晰php使用,不需要搜索
文件1.php
文件2.php
访问命名空间内的全局类、函数和常量:
命名空间和动态语言功能
PHP 命名空间的实现受到语言本身动态特性的影响。 因此,如果要将下面的代码转换为命名空间,请动态访问元素。
//example.php
命名空间关键字和 __NAMESPACE__ 常量
使用 __NAMESPACE__ 动态创建名称
关键字命名空间可用于显式访问当前命名空间或子命名空间中的元素。 它相当于类中的 self 运算符。
在 PHP 中,别名是通过运算符 use 来实现的。 以下是使用所有三种可能的导出方法的示例:
使用 use 运算符导出/使用别名
一行包含多个使用句子
导入操作是在编译执行的,但动态的类名称、函数名称或常量名称则不是。
- 导入和动态名称
导入和动态名称
此外,导入操作仅影响非限定名称和限定名称。 完全限定名称不受导出影响,因为它们是确定性的。
导入和完全限定名称
使用命名空间:后备全局函数/常量
在命名空间内,当 PHP 遇到不合格的类、函数或常量名称时,它会使用不同的优先策略来解析名称。
全球空间
如果没有定义命名空间,则所有类和函数定义都在全局空间中,这与 PHP 引入命名空间概念之前相同。 名称前面加上 表示该名称是全局空间中的名称,即使该名称驻留在另一个名称空间中。
命名空间的顺序被缩写。
PHP 文件处理
打开一个文件
$file = fopen($fname, mode) //文件名,打开模式
注意:如果fopen()函数无法打开指定的文件,则返回0(假)。
<?php //打开文件 $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached //是否到达文件末尾 while(!feof($file)) { echo fgets($file). "
"; //逐行读取文件 //echo fgetc($file); //逐字符读取 } //关闭文件 fclose($file); ?>文件系统函数
PHP JSON
字符串 json_encode ( $value [, $options = 0 ] )
范围
value:要编码的值。 该函数仅对UTF-8编码的数据有效。
options:由以下常量组成的二进制网段:JSON_HEX_QUOT、JSON_HEX_TAG、JSON_HEX_AMP、JSON_HEX_APOS、JSON_NUMERIC_CHECK、JSON_PRETTY_PRINT、JSON_UNESCAPED_SLASHES、JSON_FORCE_OBJECT
1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>混合 json_decode ($json [, $assoc = false [, $深度 = 512 [, $options = 0 ]]])
范围
json_string:要解码的JSON字符串,必须是UTF-8编码的数据
assoc:当该参数为TRUE时,将返回字段,当FALSE时,将返回对象。
length:整数类型参数,指定递归深度
options:二进制段,目前仅支持JSON_BIGINT_AS_STRING。
文章开头列出了这么多联系方式,难免会让你觉得有点AD,不过也不能怪的是,莫莫确实有这么小的表达欲望^_^,虽然有时候人们会太详细了会被称为婆婆,但是正是这些细节,对编程还是很有好处的!
从默默地问别人如何学习PHP,到后来很多人来默默地问如何学习PHP,无论默默是菜鸟还是老手,似乎总觉得找不到一条清晰的线索,但是既然默默学习了PHP,那么我所走的路或多或少都是有启发的。
PHP的背景估计就不用默默重复了。 我相信你选择一门语言不是因为它的背景和悠久的历史,更重要的是因为它的实用性。 好消息是,PHP 经受住了考验,因此,它确实是一门值得学习的语言。
莫莫还是跟着别人的经验长大的,所以她在大师的经验中少走了很多弯路,更快地进入了常态。 在此,我要向这些我不知道名字的师父表示感谢,谢谢你们,在莫默眼里,帮助无论大小,只要是帮助,就永远会让莫默的心里温暖和谐。 我想前辈们帮助我并不是因为我的一句感谢,而是因为一种责任感和默默的期待,所以我想,只有学好PHP,我才能对得起大师们的眼泪。
正如我所说,莫莫终于感受到了责任感。 莫莫不知道自己的经验能帮助新人多少,但莫莫明白,现在是履行自己职责的时候了,我有必要把我的经历告诉大家。 希望学好PHP的人,只有这样才能让中国的PHP不断提高和发展,在世界上抢占一席之地。
在默默学习PHP的这段时间里,感觉国外的PHP环境越来越成熟,规范也在逐步完善。 PHPCHINA的成立,标志着与官方直接挂钩的PHP组织即将落户中国。 我想献上迟到的掌声。 !
好吧,题外话:
在描述我自己的学习方法之前,我想对那些希望从我的文章中获得有用信息的人说几句话:
无声的文章不会对你的学习起到实质性的作用。 你必须依靠自己才能成功。 坚持、坚持、再坚持,是迈向成功的必由之路。
先总结一下我自己学习PHP的过程:
(1)熟悉HTML/CSS/JS等网页基本元素,能在完成阶段制作完整的网页,熟悉元素属性
(2)了解动态语言的概念、运行机制,熟悉PHP句型
(3)学习如何结合PHP和HTML完成简单的动态页面
(4)接触MYSQL并开始设计数据库程序
(5)不断巩固,了解大部分常用的PHP函数,了解OOP、MYSQL优化、模板
(6) 完成一个功能齐全的动态站点
我的路线可能和很多学习PHP的爱好者不谋而合。 这也是一个循序渐进的学习过程。 不过,新手听了其中的概括后,不要以为学习很简单。 有了热水,没有什么是容易的,就连小吃部的酥饼也不容易做。
先说一下我的学习思路。
首先,了解网站的概念,那么不难看出,任何网站都是由网页组成的,也就是说,想要完成一个网站,就必须先学会如何制作网页,所以你必须掌握HTML,为以后制作网站打下基础。
在学习HTML方面php学习,我认为边做边学是最有效的方法。 当然,这种方法对于学习PHP来说也是最有效的。
HTML中的任何元素都必须自己练习。 只有明白了哪些元素会产生效果之后,你的记忆才会深刻,绝对不可能盲目地看书。 我想大部分菜鸟之所以觉得概念难学,大多就一个字“懒”,懒惰是阻碍进步的最大敌人,所以克服懒惰的习惯,就能更快地学东西。
也许你在学习PHP的时候,只想尽快开发一个网站,你就会把我当成一个网站。 为什么要学哪些网页这样的小儿科? 不难看出,高眼低眼的新秀不乏其人。 这种想法无疑是在建造空中楼阁。 不打地基怎么能有屋顶呢?
好的,掌握静态网页的制作技术是学习和开发网站的前提。 这里提到这一点,是因为本文不是教程文章,所以不会对该技术进行深入分析。
我假设您已经可以完成静态页面了。 当然,好看不好看又是另一回事了。 你不可能不喜欢它,不是吗? 这实际上是我们的成就。
那么我们就开始学习动态语言的概念吧。 很多人第一次接触动态语言时可能会感到困惑。 为什么网页上会显示这种乱七八糟的东西? 其实这也不乱,你写的HTML代码不也是一堆字符吗? 毕竟代码不是直接输出的,而是经过处理的。 说白了,HTML是通过HTML解析器传递的,而PHP其实是通过PHP解析器传递的。 这和学习 HTML 是一样的。 让任何解析器来完成操作,都必须使用它们特殊的句子结构,因此 PHP 看起来奇怪也就不足为奇了。
对PHP的理解是菜鸟最难跨越的门槛,但你应该感到庆幸,PHP已经为菜鸟付出了最大的努力。 如果你学过其他语言,你可能会认为PHP确实很简单。 但如果你之前什么都没学到,那就阿弥陀佛,硬着头皮想一想吧。
书熟三遍是自然的。 这个简单的道理告诉我们,即使你看不懂PHP,你也要先熟悉它,读它,读一遍又一遍,边读边思考。 输入代码,即使您不知道代码的用途,至少您应该知道。
经过一段时间的奋斗,聪明的你显然已经逐渐开悟,逐渐理解了编程的概念,那么恭喜你,你已经迈出了成功的第一步。
如果你了解HTML和PHP的概念,那么PHP和HTML的混合编程应该不成问题。 这期间,你可以让PHP帮你计算一加一等于多少,然后在浏览器中输出。 别以为这很天真,它确实就像阿波罗登陆月球一样,你只是敲了一小段代码,但却是你的编程之旅向前迈出了一大步! 你兴奋吗? 但我得给你泼点热水,你还是个菜鸟。
如果你快乐了一段时间,你就必须继续努力。 接下来就是学习数据库了。 MYSQL可以称得上是PHP的黄金搭档。 这只会让我头晕。
头晕就是呕吐,头晕就是头晕,你不可能喝水的时候咬到自己脖子然后就不喝水了吧? 放下恐惧,继续努力,我们是来征服它的,而不是被它征服的,同志们加油吧。
经过一番挣扎,你终于明白了数据库的概念,而让你非常兴奋的是,你终于可以通过PHP连接数据库了。 这段时间你是怎么学会的? 已经可以了。
学过PHP、数据库的你,无疑右手握着摩托罗拉,双手握着诺基亚。 多么洒脱啊,多么洒脱啊,哈哈,终于学会了,不过也许这个时候,有人会不经意地拍拍你的手臂,对你说:哥们,别太激动了,你还是个新手,你还距离学习还有很长的路要走!
当您努力学习并使用 PHP 成功插入、删除和更新数据时,显然您已经接近成功了。
此时,你可能处于以下状态:
你可以 HTML 吗? 是的,我可以编译多个带有大表格和布局的网页!
你了解 PHP 吗? 是的,我将一加一的运算写在函数中,然后调用它!
你知道MYSQL吗?是的,我会在数据库中插入和删除我的信息
那么,接下来你要做什么? 我想你试试手一会就可以了,然后我给你一个任务,我们来做一个留言簿吧,这个堪比HELLO WORLD! ^_^,同样是菜鸟的第一道坎。
花了一段时间,终于学会了如何将表单的数据插入到数据库中,然后显示出来。 应该说,一个程序的雏形已经诞生了。
不过你看东看西,这个编辑峰会,那个CMS,那个CRM,我什么时候写一个?
别担心,可以说你的马步已经差不多完成了,是时候开始练习姿势了。 如果可以的话,用笔或者把简单的PHP指南抄在头上,时不时的碰一下。 下来看看,记住,去WC的时候不能错过(^2^)。
如果你有更多的条件,就买这本书看看吧,《PHP+MYSQL WEB开发(第三版)》号称圣经级别,(也许是个不错的选择(免责声明:作者没有给我任何用处)费,而且我不是书托人),距离很远,我连他大哥的脸都没见过-_-)
巩固了知识,熟悉了PHP、MYSQL开发的要领后,再回头看自己写的留言本,你可能会想,这真的是你写的吗? 当然,如果家里有鬼,也许就是它写的-_-
这时候你的消息应该已经增加了注册和分页的功能,如果你再强一些,UI(用户界面)也可以增强。 完成后,你有成就感吗? 反正我们写了一个动态网站程序,就放到我们自己的网站上好玩一下,让我们的好朋友过来看看,嘿嘿,看看我们写的多好,然后在网上推广一下。
过几天你再打开留言簿吧? 哇,一下子弹出N多个页面! 显然,你的留言本没有采取很好的安全措施,有人用JS代码搞了点小花招。 我很同情你此时的遭遇,但是没有办法,继续努力吧!
你努力工作,熟悉安全方面,设计一些程序,并且感觉良好。
那么接下来就算学会了? NONONO,现在还早,你根本就没有接触过OOP吧? 那么模板呢?
嗯,学习吧! 赶紧学吧,学完那些,你就学会了生成静态网页,现在你应该接触XML了,嗯,XML也了解了,那你就得接触AJAX了吧? AJAX 完成了......然后......
总而言之,你永远不会意识到你已经学会了一切。 一些真正的强者总是会想出新玩意儿扔给你。
我想通过我的YY,你应该熟悉一些学习过程了。 也许我的流程和你的有出路,但不管怎么样,都是一样的。 我写了这么多,只是为了给大家一个学习的机会。 至于好与坏,我不敢承诺^0^
看完你才发现,这么罗嗦,对我一点好处都没有php学习,我知道怎么学,但我想怎么学得更快,一周的崩溃,啊不,24小时的崩溃,你有沫沫吗?
我……我没有,但我确信我会在两分钟内把你压进诊所-_-
学习东西的时候,永远不要梦想快速成功。 它告诉你一个形式,但是如果你缺乏努力的环节,那是没有用的。
但我可以向你保证的一件事是,如果你学过PHP,那么学习其他语言肯定会很快,反之亦然。 如果你之前学过其他语言,那么学PHP一定很快。
不过,句型虽然简单易学,但如何利用句型来实现每个人都有适合每个人的形式却几乎是不同的。 不过,学习别人成功的代码绝对是有益无害的。 所以,多读这些经过锤炼、凝结的经典代码,才是最好的进阶之道。
说了这么多,我只想说:学习PHP除了掌握方法之外,更多的是付出眼泪。 我不想看到半途而废的人,相信自己,相信自己的选择,相信自己的能力。 如果你想放弃,如果你有点暴力,你可以打自己的眼睛,然后大喊:别人可以,为什么我不能? (是不是有点像颜洛教练?确实莫莫电影看多了,打嘴巴都疼,虽然这个道理大家都懂,但是也没关系)
另外,我想警告你,抵制住诱惑,ASP/PHP/JSP/.NET的比较似乎让你不知所措,你可能学了一半PHP,然后开始考虑C#,或者有些人都说JAVA很强,这个时候你一定不能动摇,即使你真的想学,你也得学PHP。 然后再学习,改变主意是最不可取的。 这就是熊断麦的原因。 如果经常半途而废,你只能一无所获,而且浪费大量的时间和经验。 得不偿失。 最重要的是,你会被别人看不起,没有人喜欢和那些与众不同、想要改变的人交朋友,因为这种人太不安分,太不可靠,所以你必须强迫自己完成自己的目标,即使悲伤,也要坚持,坚持就是这样练出来的。