Hello PHP

PHP的学习

用了PHP开发速度应该是不错的,相同的项目PHP的代码量估计要比用JSP要少很多。
但是在使用过程中也发现一些问题.


1. PHP灵活但不能涂鸦一般使用.
如果把数据库操作都写在一个页面上,维护就吃力了.至少要把数据库操作跟页面渲染分离开,类似JSP
加JavaBean的方式,相信这也是PHPer采用的简单MVC.

2.PHP常量
PHP array的array的读写都很灵活,可能页面会经常有这样的
echo $myArray['myKey'];数据库操作mysql_fetch_array返回的row也是,万一key值'myKey'开发的
时候没定义好,又或'myKey'是列名,突然要改了,这个常量每个文件都有的话,改起代码来就郁闷了.
PHP会使用define,类里面会使用const来代表常量
define('MY_CONSTANT', 'MY_VALUE');
echo MY_CONSTANT;
class MyClass{
    const MY_CONSTANT = 'MY_VALUE';
    public function test(){
    echo self::MY_CONSTANT;
    }
}
//External usage
echo MyClass::MY_CONSTANT;

3.=号赋值拷贝
=大多情况下是拷贝的形式的赋值.
$oldValue = array(1,2,3);
$newValue = $oldValue;
$newValue[] = 4;
echo $oldValue;//1,2,3
echo $newValue;//1,2,3,4
可以看到$newValue只是值拷贝,它的修改不会改变$oldValue.估计class实例的赋值也是拷贝。

还有什么会导致拷贝,function的入参,和return返回值应该也是默认是值拷贝传递.
function test($param) {
echo $param;//string
$param = 'newstring';
echo $param;//newstring
}
$strParam = 'string';
test($strParam);
echo $strParam;//string

foreach迭代array的时候可能导致拷贝
$myArray = array('key1'=>'value1','key2'=>'value2');
foreach($myArray as $key=>$value) {
    echo "$key=$value
";
}
按照PHP手册的说法就是foreach的时候是拷贝了一个新的array,即使在循环中修改了值,对旧array没影响.

=号对于clone好像是不算是拷贝?

个人感觉不太喜欢拷贝,如果拷贝的东西比较大,估计会影响执行效率了吧.

4. 使用reference引用避免拷贝
其实就是使用=& 引用其实是别名Alias,觉得这个就是java,c#类默认使用的,PHP必须显式加个&,有点像
c++.
$oldValue = array(1,2,3);
$newValue = &$oldValue;
$newValue[] = 4;
echo $oldValue;//1,2,3,4
echo $newValue;//1,2,3,4

PHP4里面$myClassInstance = new MyClass();其实是一种拷贝, 必须
$myClassInstance = &new MyClass();
PHP5里面就支持好多了默认new出来的东西就是PHP4里面的&new引用。

入参如果数据大(假设是一个大数组)可以传递引用避免值拷贝
function test(&$param) {
echo $param;//string
$param = 'newstring';
echo $param;//newstring
}
$strParam = 'string';
test($strParam);
echo $strParam;//newstring

同样函数返回值如果要返回一个大的数据也可以考虑返回引用
function &test(){
    $myArray = array();
    //Fill with huge amount of data
    return $myArray;
}
$returnArray = &test();


5.PHP没有类似JSP ServletContext application全局的变量似乎在手册没找到)。
可能是为了兼容CGI方式的PHP运行?

6.Eclipse PDT开发插件已经算是支持比较好了,但是如果Zend自己的Studio能弄点免费版本,有一个
强大的专门的IDE支持的话,那PHP就更好推广了。
 

你可能感兴趣的:(Open,Source,php,function,jsp,数据库,reference,application)