PHP基础知识总结

PHP基础知识总结

1,在HTML嵌入PHP脚本有三种办法:
 < script language = " php " >
// 嵌入方式一
echo ( " test " );
</ script >

<?
// 嵌入方式二
echo   " <br>test2 " ;
?>

<? php
// 嵌入方式三
echo   " <br>test3 " ;
?>

还有一种嵌入方式,即使用和Asp相同的标记<%%>,但要修改PHP.ini 相关配置,不推荐使用。

2,PHP注释分单行和多行注释,和java注释方式相同。

www.zeeklog.com  - PHP基础知识总结

<?

www.zeeklog.com  - PHP基础知识总结

// 这里是单行注释

www.zeeklog.com  - PHP基础知识总结

echo   " test " ;

www.zeeklog.com  - PHP基础知识总结

/*

www.zeeklog.com  - PHP基础知识总结

这里是多行注释!可以写很多行注释内容

www.zeeklog.com  - PHP基础知识总结

*/

www.zeeklog.com  - PHP基础知识总结

?>

注意不要有嵌套注释,如/*aaaa/*asdfa*/asdfasdfas*/,这样的注释会出现问题。

3,PHP主要的数据类型有5种,integer,double,string,array,object。

4,函数内调用函数外部变量,需要先用global进行声明,否则无法访问,这是PHP与其他程序语言的一个区别。事例代码: 注意:PHP可以在函数内部声明静态变量。用途同C语言中。

5,变量的变量,变量的函数
 <?
$a = 1 ;
function  test(){
echo   $a ;
}
test();     // 这里将不能输出结果“1”。

function  test2(){
    global   $a ;
    echo   $a ;
}
test2();     // 这样可以输出结果“1”。
?>

www.zeeklog.com  - PHP基础知识总结

<?

www.zeeklog.com  - PHP基础知识总结

// 变量的变量

www.zeeklog.com  - PHP基础知识总结

$a = " hello " ;

www.zeeklog.com  - PHP基础知识总结

$ $a = " world " ;

www.zeeklog.com  - PHP基础知识总结

echo   " $a $hello " ;     // 将输出"hello world"

www.zeeklog.com  - PHP基础知识总结

echo   " $a ${$a} " ;     // 同样将输出"hello world"

www.zeeklog.com  - PHP基础知识总结

?>

www.zeeklog.com  - PHP基础知识总结
www.zeeklog.com  - PHP基础知识总结

<?

www.zeeklog.com  - PHP基础知识总结

// 变量的函数

www.zeeklog.com  - PHP基础知识总结


www.zeeklog.com  - PHP基础知识总结

function  func_1(){

www.zeeklog.com  - PHP基础知识总结

print ( " test " );

www.zeeklog.com  - PHP基础知识总结

}

www.zeeklog.com  - PHP基础知识总结
www.zeeklog.com  - PHP基础知识总结

function  fun( $callback ){

www.zeeklog.com  - PHP基础知识总结

$callback ();

www.zeeklog.com  - PHP基础知识总结

}

www.zeeklog.com  - PHP基础知识总结
www.zeeklog.com  - PHP基础知识总结

fun( " func_1 " );     // 这样将输出"test"

www.zeeklog.com  - PHP基础知识总结

?>


6,PHP同时支持标量数组和关联数组,可以使用list()和array()来创建数组,数组下标从0开始。如:
 <?
$a [ 0 ] = " abc " ;
$a [ 1 ] = " def " ;

$b [ " foo " ] = 13 ;

$a [] = " hello " ;     // $a[2]="hello"
$a [] = " world " ;     // $a[3]="world"

$name [] = " jill " ;     // $name[0]="jill"
$name [] = " jack " ;     // $name[1]="jack"
?>


7,关联参数传递(&的使用),两种方法。例:

www.zeeklog.com  - PHP基础知识总结

<?

www.zeeklog.com  - PHP基础知识总结

// 方法一:

www.zeeklog.com  - PHP基础知识总结

function  foo( & $bar ){

www.zeeklog.com  - PHP基础知识总结

$bar .= "  and something extra " ;

www.zeeklog.com  - PHP基础知识总结

}

www.zeeklog.com  - PHP基础知识总结

$str = " This is a String, " ;

www.zeeklog.com  - PHP基础知识总结

foo( $str );

www.zeeklog.com  - PHP基础知识总结

echo   $str ;     // output:This is a String, and something extra

www.zeeklog.com  - PHP基础知识总结


www.zeeklog.com  - PHP基础知识总结

echo   " <br> " ;

www.zeeklog.com  - PHP基础知识总结

// 方法二:

www.zeeklog.com  - PHP基础知识总结

function  foo1( $bar ){

www.zeeklog.com  - PHP基础知识总结

$bar .= "  and something extra " ;

www.zeeklog.com  - PHP基础知识总结

}

www.zeeklog.com  - PHP基础知识总结

$str = " This is a String, " ;

www.zeeklog.com  - PHP基础知识总结
www.zeeklog.com  - PHP基础知识总结

foo1( $str );

www.zeeklog.com  - PHP基础知识总结

echo   $str ;     // output:This is a String,

www.zeeklog.com  - PHP基础知识总结


www.zeeklog.com  - PHP基础知识总结

echo   " <br> " ;

www.zeeklog.com  - PHP基础知识总结
www.zeeklog.com  - PHP基础知识总结

foo1( & $str );

www.zeeklog.com  - PHP基础知识总结

echo   $str ;     // output:This is a String, and something extra

www.zeeklog.com  - PHP基础知识总结

?>


8,函数默认值。PHP中函数支持设定默认值,与C++风格相同。
 <?
function  makecoffee( $type = " coffee " ){
  echo   " making a cup of $type./n " ;
}
echo  makecoffee();     // "making a cup of coffee"
echo  makecoffee( " espresso " );     // "making a cup of espresso"
/*
注意:当使用参数默认值时所有有默认值的参数应该在无默认值的参数的后边定义。否则,程序将不会按照所想的工作。
*/

function  test( $type = " test " , $ff ){     // 错误示例
   return   $type . $ff ;
}


9,PHP的几个特殊符号意义。
  $      变量
 &      变量的地址(加在变量前)
@      不显示错误信息(加在变量前)
->      类的方法或者属性
=>      数组的元素值
?:         三元运算子

10,include()语句与require()语句
   如果要根据条件或循环包含文件,需要使用include().
   require()语句只是被简单的包含一次,任何的条件语句或循环等对其无效。
  由于include()是一个特殊的语句结构,因此若语句在一个语句块中,则必须把他包含在一个语句块中。
     <?
// 下面为错误语句
if ( $condition )
    include ( $file );
else
    include ( $other );

// 下面为正确语句    
if ( $condition ){
  include ( $file );
} else
{
  include ( $other );
}
?>

PHP初学者头疼问题总结

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到
当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。
【2】Win32下apache2 用get方法传递中文参数会出错
test.php?a=你好&b=你也好
传递参数是会导致一个内部错误
解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好)
.............

【3】win32下的session不能正常工作
php.ini默认的session.save_path = /tmp
这显然是linux下的配置,win32下php无法读写session文件导致session无法使用
把它改成一个绝对路径就可以了,例如session.save_path = c:windows emp
【4】显示错误信息
当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽
例如显示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo
【5】Win32下mail()不能发送电子邮件
在linux下配置好的sendmail可以发送,在win32下需要调用smtp服务器来发送电子邮件
修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)
php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器
【6】初装的mysql如果没有设置密码,应该使用
update mysql.user set password="yourpassword" where user="root"
修改密码
【7】header already sent
这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。!
【8】更改php.ini后没有变化
重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置
【9】php在2003上面安装(ISAPI的安装方法恳请高手指教)
PHP4的php4isapi.dll好像和2003有些冲突,只能用CGI模式安装
步骤一,先 下在一个安装程序,我是装的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了,并能够访问。安装好以后,在默认网站-->应用程序配置
步骤二:点击 web服务扩展 -->新建web服务扩展.
步骤三: 扩展名-->php,然后添加
步骤四:找到php.exe的路径添加上去。
步骤五: 确定就可以了!
步骤六: 选择php的服务扩展,然后点击允许。
【10】
有时候sql语句不起作用,对数据库操作失败
最简便的调试方法,echo那句sql,看看变量的值能得到不
【11】include和require的区别
两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出
据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许*nux下情况不同,暂时还没测试
如果一个文件不想被包含多次可以使用include_once或require_once## 读取,写入文档数据
function r($file_name) {
$filenum=@fopen($file_name,"r");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name));
@fclose($filenum);
return $file_data;
}
function w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}

【12】isset()和empty()的区别
两者都是测试变量用的
但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示
如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
要注销一个变量,可以用 unset($foo)或者$foo=NULL
【13】mysql查询语句包含有关键字
php查询mysql的时候,有时候mysql表名或者列名会有关键字
这时候查询会有错误。例如表名是order,查询时候会出错
简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别
例如select * from `order`
【14】通过HTTP协议一次上传多个文件的方法
有两个思路,是同一个方法的两种实现。具体程序还需自己去设计
1,在form中设置多个文件输入框,用数组命名他们的名字,如下:
<form action="" method=post>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
</form>
这样,在服务器端做以下测试
echo "<pre>";
print_r($_FILES);
echo "</pre>";

1,在form中设置多个文件输入框,但名字不同,如下:
<form action="" method=post>
<input type=file name=usefile_a>
<input type=file name=usefile_b>
<input type=file name=usefile_c>
</form>
在服务器端做同样测试:
echo "<pre>";
print_r($_FILES);
echo "</pre>";

Read more

科普文:java 9新特性 接口方法私有化

科普文:java 9新特性 接口方法私有化

概叙 在 Java 8 之前,接口只能包含抽象方法,这些方法没有实现,并且所有这些方法都是 public 的。此外,接口中还可以包含静态常量(public static final),但不能包含任何实现代码。这种设计主要是为了确保接口仅作为行为规范的定义,而不涉及具体实现。 在 Java 8 中引入了 default methods(默认方法),使得接口可以包含带有默认实现的方法,这一特性使得接口能够进化,而不破坏现有的实现类,从而很优雅的兼容了老版本。 然而,到了 Java 9 ,接口的功能进一步被扩展了,它允许在接口中定义私有方法,但是,私有方法只能在接口内部调用,用于支持默认方法和静态方法的实现,增强了代码的复用性和模块化。 接口方法私有化的作用 当我们在一个接口里写多个默认方法或者静态方法的时候,可能会遇到程序重复的问题。我们可以把这 些重复的程序提取出来,创建一个新的方法,用private进行修饰,这样就创造了一个只有接口可以调用 的私有方法。 package com.

By Ne0inhk
实战:SpringBoot 15个功能强大Bean

实战:SpringBoot 15个功能强大Bean

下面这15+个bean,可以很方便的帮我们获取当前环境信息,运行信息,参数信息等等 1. 应用程序参数Environment和ApplicationArguments SpringBoot程序在启动时,可以通过如下方式设置启动参数: java -jar app.jar --pack.title=xxx --pack.version=1.0.0 一般访问上面的参数可以通过如下方式: @Resource 其实SpringBoot为我们注册了一个Bean对象ApplicationArguments,在代码中可以直接注入该对象 @Resource 我们还可以拿到原始配置的参数信息 String[] args = applicationArguments.getSourceArgs() ; 输出结果 [--pack.title=xxx, --pack.version=1.0.0] 可以根据自己的需要进行解析处理。 2. Banner 如果你想在项目中获取Banner信息,那么你可以直接在代码中注入Banner对象。 @Resource 注意:确保你没有关闭Ba

By Ne0inhk
科普文:详解23种设计模式

科普文:详解23种设计模式

概叙 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four(GoF)的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。 什么是 GOF(四人帮,全拼 Gang of Four)? 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。 四位作者合称

By Ne0inhk
实战:在项目中常用的8种设计模式

实战:在项目中常用的8种设计模式

概叙 关于设计模式,参考上面两篇文章。 所谓 “设计模式”,就是一套反复被人使用或验证过的方法论。从抽象或者更宏观的角度上看,只要符合使用场景并且能解决实际问题,模式应该既可以应用在DDD中,也可以应用在设计模式中。 常用的8种设计模式 策略模式 工厂模式 单例模式 代理模式 工厂方法模式 观察者模式 模板方法模式 适配器模式 设计模式简单实现模板 场景: 商场搞活动,根据客户购买商品的金额,收费时给与不同的打折,比如,购买 金额>=2000 的打八折(0.8),金额 500 ~ 1000 的,打九折(0.9),购买金额 0 ~ 500 的九五折(0.95),根据不同的金额走不同计算策略逻辑。 1 策略模式 首先定义一个Strategy接口来表示一个策略: public

By Ne0inhk