⑴ php中怎么类外访问私有方法
你问的是私有方法还是私有属性?
你说的__get __set 是访问和设置属性用的。
__call才是访问方法用的。
但这两种都需要修改原始类,既然有这个权限了,那私有方法有什么必要定义呢?
另外一种获取私有属性或调用私有方法的思路是通过反射:
//MyClass这个类中包含了一个名为myFun的私有方法
classMyClass{
private$tmp='hello';
privatefunctionmyFun()
{
echo$this->tmp.''.'world!';
}
}
//通过类名MyClass进行反射
$ref_class=newReflectionClass('MyClass');
//通过反射类进行实例化
$instance=$ref_class->newInstance();
//通过方法名myFun获取指定方法
$method=$ref_class->getMethod('myFun');
//设置可访问性
$method->setAccessible(true);
//执行方法
$method->invoke($instance);
//获取属性
$property=$ref_class->getProperty('tmp');
//打印属性
var_mp($property);
不知道你提这个单纯是个问题,还是有别的需求,可以多看看php手册学习一下。
php 访问控制
php 反射
⑵ PHP访问MYSQL数据库封装类(附函数说明)
复制代码
代码如下:
<?php
/*
MYSQL
数据库访问封装类
MYSQL
数据访问方式,php4支持以mysql_开头的过程访问方式,php5开始支持以mysqli_开头的过程和mysqli面向对象
访问方式,本封装类以mysql_封装
数据访问的一般流程:
1,连接数据库
mysql_connect
or
mysql_pconnect
2,选择数据库
mysql_select_db
3,执行SQL查询
mysql_query
4,处理返回的数据
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
0
;
//当前页面进程查询数据库的次数
var
$dblink
;
//数据库连接资源
//链接数据库
function
connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0
,
$halt=true)
{
$func
=
empty($pconnect)
?
'mysql_connect'
:
'mysql_pconnect'
;
$this->dblink
=
@$func($dbhost,$dbuser,$dbpw)
;
if
($halt
&&
!$this->dblink)
{
$this->halt("无法链接数据库!");
}
//设置查询字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this->dblink)
;
//选择数据库
$dbname
&&
@mysql_select_db($dbname,$this->dblink)
;
}
//选择数据库
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this->dblink);
}
//执行SQL查询
function
query($sql)
{
$this->querynum++
;
return
mysql_query($sql,$this->dblink)
;
}
//返回最近一次与连接句柄关联的INSERT,UPDATE
或DELETE
查询所影响的记录行数
function
affected_rows()
{
return
mysql_affected_rows($this->dblink)
;
}
//取得结果集中行的数目,只对select查询的结果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//获得单格的查询结果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作产生的
ID,只对表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this->dblink))
>=
0
?
$id
:
$this->result($this->query("SELECT
last_insert_id()"),
0);
}
//从结果集提取当前行,以数字为key表示的关联数组形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//从结果集提取当前行,以字段名为key表示的关联数组形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//从结果集提取当前行,以字段名和数字为key表示的关联数组形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//关闭链接
function
close()
{
return
mysql_close($this->dblink)
;
}
//输出简单的错误html提示信息并终止程序
function
halt($msg)
{
$message
=
"<html>\n<head>\n"
;
$message
.=
"<meta
content='text/html;charset=gb2312'>\n"
;
$message
.=
"</head>\n"
;
$message
.=
"<body>\n"
;
$message
.=
"数据库出错:".htmlspecialchars($msg)."\n"
;
$message
.=
"</body>\n"
;
$message
.=
"</html>"
;
echo
$message
;
exit
;
}
}
?>
⑶ 在php中如何设置类的属性,如何调用类的方法
PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:
<?php
classMyClass{//定义MyClass类
public$name;//定义了一个公有属性
protected$_age;//定义了一个保护属性
private$_email;//定义了一个私有属性
publicfunctionmy_method(){//定义my_method方法
}
protectedfunction_my_method2(){//定义_my_method2方法
}
}
$obj=newMyClass;//实例化
$obj->name='noname';//设置name属性
$obj->_age=12;//这是错误的,不能设置保护属性
$obj->address='KingStreet.'//设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。
$obj->my_method()//调用公有方法
$obj->_my_method2();//这是错误的,不能调用保护方法
你需要理解继承、公有、保护和私有的概念。
继承:子类继承父类的公有、保护属性和方法。
公有:类的实例可以访问的属性和方法。
保护:只能在类的内部及其子类内部访问的属性和方法。
私有:只能在类的内部访问的属性和方法。
这是个很基础的问题,建议你多看书。
⑷ PHP怎么调用其他类的方法
在Java的调用方法是import,而在PHP中没有import这个函数,一般PHP中调用其他类是用到require(),具体PHP调用其他类的方法如下:
1、首先应该先有一个文件名为tool.php的文件,在文件中声明一个类。
(4)php访问类方法扩展阅读:
类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:
<?php
class Cart { var $items; // 购物车中的物品
// 将 $num 个 $artnr 物品加入购物车
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
} // 将 $num 个 $artnr 物品从购物车中取出
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num; return true;
} elseif
($this->items[$artnr] == $num) {
unset($this->items[$artnr]); return true;
} else {
return false; }
}
} ?>
上面的例子定义了一个 Cart 类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。
⑸ php 如何通过url参数来访问类,类似于struts2的action调用。
用这种方式,最好的办法是写一个统一的入口文件来处理请求参数
// 常量-- 你的网站action路径
AC_ROOT = '../'
// 处理类
$action = $_REQUEST['action'] ? $_REQUEST['action'] : 'indexAction';
// 处理方法
$method =$_REQUEST['method'] ? $_REQUEST['method']: 'index';
// 查看类是否存在
$actoinfile = AC_ROOT . $action . '.php';
if(file_exists($actoinfile))
{
// 如果存在
require_once($actoinfile);
// 获取此类的对象
$obj = new $action ();
// 查看处理函数是否存在
if (!method_exists($obj , $method)) {
// 方法不存在返回错误
}
// 进入处理流程
$obj->{$method}();
} else {
// 类不存在 返回错误
}
建议: 你可以看看 Thinkphp 等框架 的入口处理方法, 对你应该很有帮助.
⑹ 请问PHP中同一个类中怎么访问不同方法的变量
PHP中同一个类中怎么访问不同方法的变量,我觉得这要看你访问的变量的作用范围,如果这个变量的作用范围是类,那么只要是同一个类里的方法,都可以访问。
如果这个变量的作用范围只在类的方法里,则可以采取的办法:
1. 修改或定义变量的作用域为全局。
2. 拆分方法,将变量的结果作为一个结果返回。
⑺ 几种php访问url的方法
常用的就三种吧,
file_get_contents(), fopen, curl
一般用 curl 扩展的比较多,除此以外还有其他方法
fsockopen 啥的