首页 > 编程技术 > php

PHP5试用(二)

发布时间:2016-11-25 17:36

抽象类
抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。
例六:抽象类
<?php
abstract class foo {
protected $x;
abstract function display();
function setX($x) {
$this->x = $x;
}
}
class foo2 extends foo {
function display() {
// Code
}
}
?>
__call
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
例七:__call
<?php
class foo {
function __call($name,$arguments) {
print("Did you call me? I'm $name!");
}
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。
例八:使用 __call 实现“过载”动作
<?php
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
}
} private function foo_for_int($x) {
print("oh an int!");
} private function foo_for_string($x) {
print("oh a string!");
}
} $x = new Magic();
$x->foo(3);
$x->foo("3");
?>
__set 和 __get
这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
例九: __set 和 __get
<?php
class foo {
function __set($name,$val) {
print("Hello, you tried to put $val in $name");
}
function __get($name) {
print("Hey you asked for $name");
}
}
$x = new foo();
$x->bar = 3;
print($x->winky_winky);
在安装了一些第三方函数库之后,结合图形处理技能,你就可以迅速使用PHP创建和处理图像了。事实上,你也不需要很多几何学知识——因为我在中学的时候这门功课曾经不及格而现在却能使用PHP创建图像!
在使用基本的图像创建函数之前,需要安装GD库。要使用JPEG相关的图像创建函数还需要安装jpeg-6b。在图像中使用Type 1字体的时候还必须安装t1lib。asdf
在这里,你还需要对你的系统设置进行进一步地调整。首先安装t1lib并结束,然后是jpeg-6b。第三步安装GD函数库。确保以上三部分按顺序安装,原因是你需要编译GD库才能使用jpeg-6b库。如果首先安装jpeg-6b,编译就会出错,这会让你不知所措够上一段时间。
在三函数库之后,重新配置PHP。这是在轻松安装PHP的DSO版本时的典型方法。然后执行make clean,命令,并在当前配置提示中加入以下代码:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
最后执行make、make install完成配置。重新启动 Apache,并运行phpinfo()函数以检查新功能是否正常运行,然后就可以开始了。
取决于安装的GD库版本,你可能具有创建GIF或者PNG图像的能力。关键是如果你已经安装了gd-1.6或者早期版本,则可处理GIF文件,但不能处理PNG文件;如果安装了gd-1.6或者以后版本,你可以处理PNG文件却又不能处理GIF文件。
创建一个简单的图像需要几个函数。我将按步骤演示如下。
输出包含你所创建图像MIME类型的文件头,本例中为PNG。
header ("Content-type: image/png");
使用ImageCreate()创建一变量存放空白图像。该函数需要一个图片像素尺寸。格式为ImageCreate(x_size, y_size),对250*250像素的图片,如下:
$newImg = ImageCreate(250,250);
由于此时你的图像还是空白,所以需要用某些色彩填满它。但首先需要用ImageColorAllocate()函数按照颜色的RGB值为每种颜色确定名字。函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如是天蓝色,应使用:
$skyblue = ImageColorAllocate($newImg,136,193,255);
接着,用ImageFill()函数为图像填充以上颜色。实际上ImageFill()函数有多个版本,如ImageFillRectangle(), ImageFillPolygon()等等。为简单起见,采用ImageFill()函数进行颜色填充,格式如下:
ImageFill([image], [start x point], [start y point], [color])
ImageFill($newImg,0,0,$skyblue);
//执行存储过程
for($i=0;$i<$ses_basket_items;$i++)
{
$query="exec add_ddxx
@p_account="$session_account",
@p_name="$name[$i]",
@p_num="$num[$i]",
@p_marketprice="$marketprice[$i]",
@p_memberprice="$memberprice[$i]",
@p_priceoftax="$notaxprice[$i]",
@p_priceoflast="$lastprice[$i]",
@p_sumprice="$price[$i]",
@p_buy_date="$date",
@p_flag="$p_flag"";
$result=mssql_query($query,$connection) or die("存储过程执行错误,无法执行该SQL:$query");
}

php和js交互一例
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Untitled</title>
<script language="JavaScript">
<!--
function rec_delete(message){
return confirm(message);
}
//-->
</script>
</head>
<body>
<?php
$myrow[guest_name]="asdf"";
$myrow[guest_name]="asdf'";
$guest_name=addslashes($myrow[guest_name]);
//$guest_name=str2js($myrow[guest_name],"'");
$dele_mess="真的要删除这个留言吗? 留言姓名:$guest_name($myrow[guest_ip])"." 留言时间:$myrow[guest_time]";
echo "<script>";
echo "delete_mess="$dele_mess"";
echo "</script>";
?>
<a href="<?php echo "$PHP_SELF?opt=delete"; ?>" onClick='return rec_delete(delete_mess)'>删除</a>
</body>
</html>
 

<head>
<title>图像效果演示</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script>
/*
舜子制作
Made by PuterJam
*/
//--初始化变量--
var rT=true;//允许图像过渡
var bT=true;//允许图像淡入淡出
var tw=150;//提示框宽度
var endaction=false;//结束动画
var ns4 = document.layers;
var ns6 = document.getElementById && !document.all;
var ie4 = document.all;
offsetX = 0;
offsetY = 20;
var toolTipSTYLE="";
function initToolTips()
{
  if(ns4||ns6||ie4)
  {
      if(ns4) toolTipSTYLE = document.toolTipLayer;
      else if(ns6) toolTipSTYLE = document.getElementById("toolTipLayer").style;
      else if(ie4) toolTipSTYLE = document.all.toolTipLayer.style;
      if(ns4) document.captureEvents(Event.MOUSEMOVE);
      else
      {
      toolTipSTYLE.visibility = "visible";
      toolTipSTYLE.display = "none";
      }
      document.onmousemove = moveToMouseLoc;
  }
}
function toolTip(msg, fg, bg)
{
  if(toolTip.arguments.length < 1) // hide
  {
      if(ns4)
      {
      toolTipSTYLE.visibility = "hidden";
      }
      else
      {
      //--图象过渡,淡出处理--
      if (!endaction) {toolTipSTYLE.display = "none";}
      if (rT) document.all("msg1").filters[1].Apply();
      if (bT) document.all("msg1").filters[2].Apply();
标签:[!--infotagslink--]

您可能感兴趣的文章: