首页 > 编程技术 > php

php5中类属性的用法

发布时间:2016-11-25 16:08

属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)

在 PHP5 中,属性指在 class  中声明的变量。
在声明变量时,必须使用  public private protected 之一进行修饰,定义变量的访问权限。

Public(公开): 可以自由的在类的内部外部读取、修改。 
Private(私有): 只能在这个当前类的内部读取、修改。 
Protected(受保护):能够在这个类和类的子类中读取和修改。
这里我们先介绍Public(公开)的情况下对属性的读取和修改。

属性的使用:通过引用变量的 -> 符号调用变量指向对象的属性。
在方法内部通过 $this-> 符号调用同一对象的属性。

<?php
class Bike
{
public $color = "blue"; //定义自行车的颜色属性为蓝色
public $price = 200;  //定义自行车的价格为200
}
$myBike = new Bike();  //创建了对象
echo "自行车的颜色为".$myBike->color."<br />";
echo "自行车的价格为".$myBike->price;
?>


输出的结果就应该为

自行车的颜色为blue
自行车的价格为200


以上就是将原先给自行车属性所定义的值进行输出。
接下来是看看怎么在创建对象后修改原来的属性值。

<?php
class Bike
{
public $color = "blue"; //定义自行车的颜色属性为蓝色
public $price = 200;  //定义自行车的价格为200
}
$myBike = new Bike();  //创建了对象
$myBike->color = "red"; //修改成red
$myBike->pirce = 300;  //价格变为300
echo "自行车的颜色为".$myBike->color."<br />";
echo "自行车的价格为".$myBike->price;
?>
 

1、  全局变量$_FILES[‘xxx’];

    PHP5新创了一个$_$_FILES全局变量来接收文件的上传。这和以往版本有些差别。在旧版本里,你可以打开register_globals=on直接使用全局变量,或使用$HTTP_POST_FILSE[‘xxx’],这里只研究PHP5

 

2文件上传表单

    1,上传文件的表单使用post方式(和get的区别不用说了);还要加上enctype=''multipart/form-data''。
    2,一般要加上隐藏域:

<input type=hidden name=''MAX_FILE_SIZE'' value=”30000”>,位置在file域前面。value的值是上传文件的客户端字节限制。据说可以减少文件超标时客户端的等待时间,不过我没觉得有什么区别。
   注意:MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP.ini 设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦

    3,出于安全考虑,file域是不许赋值的。随便在file域输入字符串,然后按submit也不会有反应。必须是第二个字符是冒号的时候(比如空格跟随冒号可以上传一个长度为0字节的“文件”),submit才同意“服务”——不过这个是客户端的措施,跟MAX_FILE_SIZE一样很容易绕过去。

 

Page1.php:

<form enctype="multipart/form-data" action="page2.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="8388608">
上传文件: <input name=     
      		以前发过,今天又校对了一下,也当是自己又重新温习了一遍,又有新的感觉。
不愧是久负盛名的开源项目,编码规范简单精练,切中要害。
希望能对大家有所帮助,欢迎交流看法。 

phpBB 编码标准规范

如果您对原手册内容有注解或建议,请发电子邮件至 nate@phpbb.com ;
如果您对本文翻译有什么意见或建议,请联系QQ78045595,或发电子邮件至gaogan at gmail dot com.

编辑器设定

制表符 vs 空格:为了此事尽可能地简单,我们使用制表符,不用空格。 你可以随便设定编辑器使用多少空格显示制表符,但是必须保证当你保存文件时,它保存的是制表符而不是空格。 这样,我们每个人都可以让代码以我们喜欢的方式显示,同时不破坏实际文件的布局。

换行: 确保编辑器将文件保存为 Unix 格式。这意味着以换行符终止一行,而不是在 Win32 里那样用一个 CR/LF 对,也不是 Mac 所用的某种方式。任何规范的 Win32 编辑器应该做到这点,但这并不见得总是默认的。你需要熟悉你的编辑器。如果你需要有关使用 Windows 文本编辑器的建议,应该去咨询它的开发者。他们中有些人在 Win32 中做编辑工作。

命名约定

在我们的命名约定中,不会使用任何形式的匈牙利命名。我们很多人相信,匈牙利命名是导致代码混乱的一种主要手法。

变量名称:变量名应当全部小写,并且词语之间以单个下划线分隔。

例如: $current_user 是正确的, 但是 $currentuser 和 $currentUser 就不正确。

名称应当是描述性的,并且简明。我们自然不希望使用冗长的句子作为变量名,但是多输入几个字符总好于疑惑于某个变量到底是干什么用的。

循环计数器:允许使用一个单字符变量名的唯一情形是当它作为一个循环计数器的时候。在这种情况下,外层循环的计数器应当始终是 $i。如果有一个循环处于这个循环的内部,它的计数器应当是 $j,进而是 $k,等等。如果循环的计数器是一个已经存在并且名字有意义的变量,本规范并不适用。

例如:
 

1    for ($i = 0; $i < $outer_size; $i++)  
2    { 
3       for ($j = 0; $j < $inner_size; $j++)  
4       { 
5          foo($i, $j); 
6       } 
7    }
    view plain | print | copy to clipboard | ?

 


函数名称: 函数也应该描述性地命名。这里我们并非在用 C 编程,我们不希望写出诸如“stristr()”此类的函数来。同上,使用单词间用单下划线分隔的小写名称。函数名称中某处最好有一个动词。较好的函数名 称如print_login_status(), get_user_data(),等等。

函数参数:参数遵循和变量名字相同的约定。我们不希望一堆这样的函数:do_stuff($a, $b, $c)。在大部分情况下,我们希望仅仅看看函数的声明,就知道怎样使用它。

总结: 这里的基本哲学是不要为了偷懒而伤害了代码的清晰。但是,必须由一些常识来掌握这种平衡;例如, print_login_status_for_a_given_user() 做得就过火了——这个函数命名为 print_user_login_status() 更好些, 或只是 print_login_status()。

代码布局

新建文件的标准头部:这里是一个头部的模版,它应当包含在每个 phpBB 文件开始
 

1    /***************************************************************************
2                   &nb
<

 

 


<?php
/**
 * @name 采集后的处理.php
 * @date Sat Dec 22 02:07:45 CST 2007
 * @copyright 马永占(MyZ)
 * @author 马永占(MyZ)
 * @link http://blog.111cn.net/mayongzhan/
 */
 
//采集后的文件,然后那来进行处理.这里的东西让我抄了5本书,是哪的不方便提供,自己找找吧.
 
header(''Content-Type:text/html;charset=utf8'');
 
function writer($content,$url)
{
    $fp = fopen($url, ''ab'');
    fwrite($fp, $content);
    fclose($fp);        
}
 
//从1到136页的内容一次合并.这个是最爽的...
 
for ($i=1;$i<136;$i++) {
    $str = file_get_contents(''./myz/''.$i.''.shtml'');
    preg_match("/(<h1>)(.*?)(</h1>)(.*?)(<div class="artibody" id="artibody">)(.*?)(</div>)/s",$str,$arr);
    $arr[6] = preg_replace("/(<span[^>]+>.*?<a[^>]+>)(.*?)(</a></span>)/s","$2",preg_replace("/<p>|</p>/","rn",$arr[6]));
    $result = "rn------------------------------------------------rn------------------------------------------------rn------------------------------------------------rn".$i."----------------马永占的目录编号:".$arr[2]."rn------------------------------------------------rn------------------------------------------------rn------------------------------------------------rn".$arr[6];
    writer($result, "./myz/all.txt");
}
?> 

原理。我在网上找到了一个打包程序make_exe(来自PHPnow)可以把.7z+打包后的文件界面信息打成一个EXE运行包,并在运行自解压后自动运行7z压缩包中的批处理文件。make_exe.zip包里有Make_exe.cmd, PHPServer.sfx,PHPServer.sfx.cf三个文件。看到这一点,大家应该有思路了吧。首先把PHPServer压成 PHPServer.7z文件然后配置好。修改PHPServer.sfx.cf文件,然后运行Make_exe.cmd就可以了。

首先:Make_exe.cmd代码
复制内容到剪贴板
代码:
set v=1.2
copy /b /y PHPServer.sfx + PHPServer.sfx.cf + *.* PHPServer%v%.exe || pause
很明了吧!“set v=1.2”是版本,然后需要三个文件,打包。
PHPServer.sfx.cf代码,打开方法,直接拖到TXT就行了
复制内容到剪贴板
代码:
;!@Install@!UTF-8!
Title="房地产信息管理系统V1.2"
BeginPrompt="# 房地产信息管理系统V1.2安装包 #nn * 确认你没有运行 IIS 等其他占用 80 端口的服务。n * 如果你安装有其他同类套件,请先停止或卸载。n * 安装完成后请不要随便移动安装目录。nn作者:xilo QQ:110026985 主页 http://www.xilo.cn。"
ExtractDialogText="请稍后,正在解压文件 ..."
ExtractTitle="正在解压 ..."
ExtractPathText="请选择解压路经(仅限英文字符):"
ExtractCancelText="取消"
CancelPrompt="你真的要退出吗?"
GUIFlags="4+8+32+64+256+2048"
InstallPath="D:\PHPServer"
RunProgram="cmd /c setup.cmd"
;!@InstallEnd@!
这些我相信也不我解释了,想显示什么就改什么。注意这句InstallPath="D:\PHPServer"为安装目录,还有解压后运行RunProgram="cmd /c setup.cmd"这个BAT,也就是启动apache,mysql服务的命令了。下面就是PHPServer的setup.cmd的命令了。因为太多简单贴上几句!

setup.cmd代码:

代码:

@echo off
rem -- http://www.xilo.cn
rem -- By xilo (QQ:110026985)
setlocal enableextensions
call Pnconfig.cmd
prompt -$g
title 初始化 PHPserver %pnver% - Apache + PHP + MySQL
echo   ____________________________________________________________
echo  ^|                                                            ^|
echo  ^|  ######  正在安装 浩搏不动产信息管理系统 环境套件  ######  ^|
echo  ^|____________________________________________________________^|
echo.

:copy
echo   _____________________________
<
标签:[!--infotagslink--]