本文目录一览:
有哪些 PHP 调试技巧?
- 最简单经典的
var_dump()
或者echo + exit()
- 配置
error_log
,能够解决很多疑难杂症 debug
方式是:xdebug
firebug + firephp
或者chrome + chromephp
PHP的入门技巧有哪些?
PHP 是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收了C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。杭州这边到有码互联学习php还是挺好的,一般学习的都是3-4个月的学习,然后有2个月实训,这样下来就会增加自己的一些实战能力。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。如果有其他编程语言的基础,那上手更容易。
- PHP 安装与配置 新手建议使用PHP集成环境,Wampserver5。 Wamp就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。
- PHP 学习资料 建议参考w3school的PHP学习资料,简单易懂,适合新手。 PHP视频教程,建议参考PHP100的视频教程,挺不错的。
- PHP 相关学习资料
PHP 的主要应用是web应用,web应用是由多种技术组成的。
学习PHP的同时,需要学习相关的其他技术。
- SQL 是用于访问和处理数据库的标准的计算机语言
- HTML 超文本标签语言
- CSS 层叠样式表
- JavaScript 世界上最流行的脚本语言
- jQuery 是一个JavaScript库,极大地简化了 JavaScript 编程
高质量PHP代码的50个技巧(3)
42
43
44
45
/**
* Method to execute a command in the terminal
* Uses :
* 1. system
* 2. passthru
* 3. exec
* 4. shell_exec
*/
function terminal($command)
{
// system
if (function_exists('system')) {
ob_start();
system($command, $return_var);
$output = ob_get_contents();
ob_end_clean();
}
// passthru
else if (function_exists('passthru')) {
ob_start();
passthru($command, $return_var);
$output = ob_get_contents();
ob_end_clean();
}
// exec
else if (function_exists('exec')) {
exec($command, $output, $return_var);
$output = implode("\n", $output);
}
// shell_exec
else if (function_exists('shell_exec')) {
$output = shell_exec($command);
} else {
$output = 'Command execution not possible on this system';
$return_var = 1;
}
return array('output' => $output, 'status' => $return_var);
}
terminal('ls');
上面的函数将运行shell命令, 只要有一个系统函数可用, 这保持了代码的一致性.
5. 灵活编写函数
function add_to_cart($item_id, $qty)
{
$_SESSION['cart']['item_id'] = $qty;
}
add_to_cart('IPHONE3', 2);
使用上面的函数添加单个项目。而当添加项列表的时候,你要创建另一个函数吗?不用,只要稍加留意不同类型的参数,就会更灵活。如:
function add_to_cart($item_id, $qty)
{
if (!is_array($item_id)) {
$_SESSION['cart']['item_id'] = $qty;
} else {
foreach ($item_id as $i_id => $qty) {
$_SESSION['cart'][$i_id] = $qty;
}
}
}
add_to_cart('IPHONE3', 2);
add_to_cart(array('IPHONE3' => 2, 'IPAD' => 5));
现在,同个函数可以处理不同类型的输入参数了。可以参照上面的例子重构你的多处代码,使其更智能。
6. 有意忽略php关闭标签
我很想知道为什么这么多关于php建议的博客文章都没提到这点。
<?php
echo "Hello";
// Now don't close this tag
这将节约你很多时间。我们举个例子:
一个 super_class.php
文件
<?php
class super_class
{
function super_function()
{
// super code
}
}
?>
// super extra character after the closing tag
index.php
<?php
require_once('super_class.php');
// echo an image or pdf , or set the cookies or session data
这样,你将会得到一个 Headers already send error
。为什么?因为 “super extra character” 已经被输出了。现在你得开始调试啦。这会花费大量时间寻找 super extra
的位置。因此,养成省略关闭符的习惯:
<?php
class super_class
{
function super_function()
{
// super code
}
}
// No closing tag
这会更好。
7. 在某地方收集所有输入,一次输出给浏览器
这称为输出缓冲,假如说你已在不同的函数输出内容:
function print_header()
{
echo "<p id='header'>Site Log and Login links</p>";
}
function print_footer()
{
echo "<p id='footer'>Site was made by me</p>";
}
print_header();
for ($i = 0; $i < 100; $i++) {
echo "I is : $i <br />";
}
print_footer();
替代方案,在某地方集中收集输出。你可以存储在函数的局部变量中,也可以使用ob_start
和ob_end_clean
。如下:
function print_header()
{
$o = "<p id='header'>Site Log and Login links</p>";
return $o;
}
function print_footer()
{
$o = "<p id='footer'>Site was made by me</p>";
return $o;
}
echo print_header();
for ($i = 0; $i < 100; $i++) {
echo "I is : $i <br />";
}
echo print_footer();
为什么需要输出缓冲:
可以在发送给浏览器前更改输出。如 str_replace
函数或可能是 preg_replace
或添加些监控/调试的html内容。
输出给浏览器的同时又做php的处理很糟糕。你应该看到过有些站点的侧边栏或中间出现错误信息。知道为什么会发生吗?因为处理和输出混合了。
8. 发送正确的mime类型头信息,如果输出非html内容的话。
输出一些xml。
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml .= "<response><code>0</code></response>";
// Send xml data
echo $xml;
工作得不错。但需要一些改进。
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml .= "<response><code>0</code></response>";