OO中self和$this的区别

What is the difference between  $this  and  self ?

Inside a class definition, $this refers to the current object, while  self  refers to the current class.

It is necessary to refer to a class element using  self ,
and refer to an object element using  $this .
Note also how an object variable must be preceded by a keyword in its definition.

The following example illustrates a few cases:

<?php
class Classy {

const       STAT = 'S' ; // no dollar sign for constants (they are always static)
static     $stat = 'Static' ;
public     $publ = 'Public' ;
private    $priv = 'Private' ;
protected  $prot = 'Protected' ;

function __construct( ){  }

public function showMe( ){
    print '<br> self::STAT: '  .  self::STAT ; // refer to a (static) constant like this
    print '<br> self::$stat: ' . self::$stat ; // static variable
    print '<br>$this->stat: '  . $this->stat ; // legal, but not what you might think: empty result
    print '<br>$this->publ: '  . $this->publ ; // refer to an object variable like this
    print '<br>' ;
}
}
$me = new Classy( ) ;
$me->showMe( ) ;

/* Produces this output:
self::STAT: S
self::$stat: Static
$this->stat:
$this->publ: Public
*/
?>

 

IE6不兼容事件

加上这行(个人猜想这句话的意思是直接忽略ie的内部默认样式,google,百度没有查到资料 – -!)

<!--This is IE DTD patch , Don't delete this line.-->

控制网页中flash不处于最上层

开发过程终于到了个问题,flash将点击触发的jquery日历遮罩了起来,因为flash始终处在最上层,找到的解决文章:

你用层的时候,如果同时有flash在网页中存在,而又是默认的插入的flash,那么,不管这个层的z轴是多少,有多靠上,那个flash总是在这个层的上面,这当然并不是我们想用的效果。
你在插入flash的时候,dw下面的属性中会有一个参数,在那儿加多一个,
参数用wmode值用transparent这样就能让flash在自己的位置上乖乖的。
关于那个还有另一个值,Opaque,好像是与上面的效果相反吧。不清楚
我没有更多的关于这个的参数,

<PARAM NAME=wmode value=transparent>

#flash背景透明,在flash语句中加入这句或者:

选中刚才已插入的flash动画,右击鼠标选择参数,在弹出的对话框中点击+加号图标,在左侧的参数中键入wmode在右侧的值框内键入transparent点击ok,按f12进行预览,ok!我们所要的透明效果就出现了!

在 Mozilla,Firefox浏览器中起作用的是这个标签 <embed></embed> 那这样,在<embed>标签内加入属性 wmode=”transparent” 就可以实现flash背景透明,如<embed src=”your.swf” wmode=”transparent” quality=”high”></embed>

embed好像不提倡使用(网景发明的),w3c推荐用object代替。

也可以尝试加到object中让flash不要漂到最高层:

<param name=”wmode” value=”Opaque”>

wmode属性就是用来设置透明的,如果你去掉这个属性,那么你的Flash将覆盖你的背景,加上wmode=”transparent” 则在可以让你的flash透明,而wmode=”Opaque” 则正好相反,总结总结:

“Opaque” 使应用程序隐藏页面上位于它后面的所有内容。

“Transparent”使 HTML 页的背景可以透过应用程序的所有透明部分显示出来,并且可能会降低动画性能。

“Opaque “和”Transparent “都可与 HTML 层交互,从而允许 SWF 文件上方的层遮蔽应用程序。这两种选项之间的差异在于”Transparent”允许透明,因此,如果 SWF 文件的某一部分是透明的,则 SWF 文件下方的 HTML 层可以透过该部分显示出来,而”opaque”则不会显示。
window 模式

默认情况下的显示模式,在这种模式下flash player有自己的窗口句柄,这就意味着flash影片是存在于Windows中的一个显示实例,并且是在浏览器核心显示窗口之上的,所以flash只是貌似显示在浏览器中,但这也是flash最快最有效率的渲染模式。由于他是独立于浏览器的HTML渲染表面,这就导致默认显示方式下flash总是会遮住位置与他重合的所有DHTML层。

但是大多数苹果电脑浏览器会允许DHTML层显示在flash之上,但当flash影片播放时会出现比较诡异的现象,比如DHTML层像被flash刮掉一块一样显示异常。

Opaque 模式

这是一种无窗口模式,在这种情况下flash player没有自己的窗口句柄,这就需要浏览器需要告诉flash player在浏览器的渲染表面绘制的时间和位置。这时flash影片就不会在高于浏览器HTML渲染表面而是与其他元素一样在同一个页面上,因此你就可以使用z-index值来控制DHTML元素是遮盖flash或者被遮盖。

Transparent 模式

透明模式,在这种模式下flash player会将stage的背景色alpha值将为0并且只会绘制stage上真实可见的对象,同样你也可以使用z-index来控制flash影片的深度值,但是与Opaque模式不同的是这样做会降低flash影片的回放效果,而且在9.0.115之前的flash player版本设置wmode=”opaque”或”transparent”会导致全屏模式失效。

了解了各种模式的实现方式和意义在以后的开发中就可以按照具体情况选择设置wmode属性的值了。

SQL语句中空值问题

sql查询语句中有一个查询条件为空值,我写成了=NULL始终查不出来结果,易大哥告诉我写成IS NULL即可,果断可以了,纠结了好久问题在这,记录下……

另摘录一段where查询条件示例:

使用WHERE子句设置查询条件
WHERE子句设置查询条件,过滤掉不需要的数据行。
例如下面语句查询年龄大于20的数据:
SELECT *
FROM usertable
WHERE age>20

WHERE子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
范围运算符(表达式值是否在指定的范围):BETWEEN…AND… NOT BETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) NOT IN (项1,项2……)
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
空值判断符(判断表达式是否为空):IS NULL、IS NOT NULL

逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR

1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
2、列表运算符例:country IN (’Germany’,’China’)
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。
可用于char、 varchar、text、ntext、datetime和smalldatetime等类型查询。
可使用以下通配字符: 百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。 下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 [^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如: 限制以Publishing结尾,使用LIKE ‘%Publishing’ 限制以A开头:LIKE ‘[A]%’ 限制以A开头外:LIKE ‘[^A]%’ 4、空值判断符例WHERE age IS NULL 5、逻辑运算符:优先级为NOT、AND、OR

jquery.ajax详解

jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

这个是jQuery 的底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。

$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。

注意: 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 “text/xml”)。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。
当设置 datatype 类型为 ‘script’ 的时候,所有的远程(不在同一个域中)POST请求都回转换为GET方式。

$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。

jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 “jsonp” 时,jQuery 将自动调用回调函数。(这个我不是很懂)

参数列表:

 

参数名 类型 描述
url String (默认: 当前页地址) 发送请求的地址。
type String (默认: “GET”) 请求方式 (“POST” 或 “GET”), 默认为 “GET”。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。
async Boolean (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。

function (XMLHttpRequest) {

         this; // the options for this ajax request          }
cache Boolean (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。
complete Function 请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。

function (XMLHttpRequest, textStatus) {

         this; // the options for this ajax request          }
contentType String (默认: “application/x-www-form-urlencoded”) 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
data Object,
String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:[“bar1”, “bar2”]} 转换为 ‘&foo=bar1&foo=bar2’。
dataType String 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

“xml”: 返回 XML 文档,可用 jQuery 处理。

“html”: 返回纯文本 HTML 信息;包含 script 元素。

“script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。

“json”: 返回 JSON 数据 。

“jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

error Function (默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。

function (XMLHttpRequest, textStatus, errorThrown) {

         // 通常情况下textStatus和errorThown只有其中一个有值           this; // the options for this ajax request          }
global Boolean (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件
ifModified Boolean (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
processData Boolean (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 “application/x-www-form-urlencoded”。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
success Function 请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态

function (data, textStatus) {

         // data could be xmlDoc, jsonObj, html, text, etc...          this; // the options for this ajax request          }

 

这里有几个Ajax事件参数:beforeSend success complete ,error 。我们可以定义这些事件来很好的处理我们的每一次的Ajax请求。注意一下,这些Ajax事件里面的 this 都是指向Ajax请求的选项信息的(请参考说 get() 方法时的this的图片)。
请认真阅读上面的参数列表,如果你要用jQuery来进行Ajax开发,那么这些参数你都必需熟知的。

示例代码,获取博客园首页的文章题目:

$.ajax({

type: "get",

url: "http://www.cnblogs.com/rss",

beforeSend: function(XMLHttpRequest){//ShowLoading(); },
success: function(data, textStatus){

$(".ajax.ajaxResult").html("");

$("item",data).each(function(i, domEle){

$(".ajax.ajaxResult").append("<li>"+$(domEle).children("title").text()+"</li>");

});

},

complete: function(XMLHttpRequest, textStatus){//HideLoading(); },
error: function(){//请求出错处理 }
});

open-flash-chart

第三方flash图形库,php,js,asp等可以直接调用

http://teethgrinder.co.uk/open-flash-chart/

 使用中出现过的错误总结:

1.    flash文件路径不对

function open_flash_chart_object( $width, $height, $url, $use_swfobject=true, $base=” ){}

该函数默认flash文件是根目录,如果要引用,必须写到$base中

2.    数据文件路径不对

数据文件注意文件名中的下划线和中划线之分

  //数据文件中可以自定义的参数:

  $this->data_sets = array();

  $this->data = array();
  $this->links = array();
  $this->width = 250;
  $this->height = 200;
  $this->js_path = 'js/';
  $this->swf_path = '';
  $this->x_labels = array();
  $this->y_min = '';
  $this->y_max = '';
  $this->x_min = '';
  $this->x_max = '';
  $this->y_steps = '';
  $this->title = '';
  $this->title_style = '';
  $this->occurence = 0;

  $this->x_offset = '';

  $this->x_tick_size = -1;

  $this->y2_max = '';
  $this->y2_min = '';

  // GRID styles:
  $this->x_axis_colour = '';
  $this->x_axis_3d = '';
  $this->x_grid_colour = '';
  $this->x_axis_steps = 1;
  $this->y_axis_colour = '';
  $this->y_grid_colour = '';
  $this->y2_axis_colour = '';

  // AXIS LABEL styles:         
  $this->x_label_style = '';
  $this->y_label_style = '';
  $this->y_label_style_right = '';

  // AXIS LEGEND styles:
  $this->x_legend = '';
  $this->x_legend_size = 20;
  $this->x_legend_colour = '#000000';

  $this->y_legend = '';
  $this->y_legend_right = '';
  //$this->y_legend_size = 20;
  //$this->y_legend_colour = '#000000';

  $this->lines = array();
  $this->line_default['type'] = 'line';
  $this->line_default['values'] = '3,#87421F';
  $this->js_line_default = 'so.addVariable("line","3,#87421F");';

  $this->bg_colour = '';
  $this->bg_image = '';

  $this->inner_bg_colour = '';
  $this->inner_bg_colour_2 = '';
  $this->inner_bg_angle = '';

  // PIE chart ------------
  $this->pie = '';
  $this->pie_values = '';
  $this->pie_colours = '';
  $this->pie_labels = '';

  $this->tool_tip = '';

  // which data lines are attached to the
  // right Y axis?
  $this->y2_lines = array();

  // Number formatting:
  $this->y_format='';
  $this->num_decimals='';
  $this->is_fixed_num_decimals_forced='';
  $this->is_decimal_separator_comma='';
  $this->is_thousand_separator_disabled='';

  $this->output_type = '';

  //
  // set some default value incase the user forgets
  // to set them, so at least they see *something*
  // even is it is only the axis and some ticks
  //
  $this->set_y_min( 0 );
  $this->set_y_max( 20 );
  $this->set_x_axis_steps( 1 );
  $this->y_label_steps( 5 );