【背景】
已经有了:
里面有一堆的函数代码。
现在想要封装成类,并且在别的php中调用该类的功能。
【折腾过程】
1.搜:
php中如何写类 如何使用类
参考:file1.php类如下:
class A{
...
}
file2.php调用file2.php中的类如下:
include "file1.php";
class B{
$C = new A();
.....
}
class Myclass{
public$prop = 123;
}
$obj = new Myclass();
找到官网的:
里面解释的比较清楚。
2.自己去试试。
期间又涉及到:
3.然后自己基本上实现了:
在一个PHP文件中定义类:
crifanLib.php<?php
/*
[Filename]
crifanLib.php
[Function]
crifan's php lib, implement common functions
[Author]
Crifan Li
[Contact]
https://www.crifan.com/contact_me/
[Note]
1.online see code:
http://code.google.com/p/crifanlib/source/browse/trunk/php/crifanLib.php
[TODO]
[History]
[v2015-07-27]
1.add logInit, logWrite
[v1.0]
1.initial version, need clean up later
*/
class crifanLib {
private $logFile;
private $logFp;
/*
Init log file
*/
function logInit($inputLogFile = null){
...
}
/*
Write log info to file
*/
function logWrite($logContent){
...
}
}
?>
在另外一个PHP文件中引用该类:
wx_access_token.php<?php
/*
File: wx_access_token.php
Author: Crifan Li
Version: 2015-07-27
Contact: https://www.crifan.com/about/me/
Function: Wechat get access token
*/
// https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
include_once "crifanLib.php";
//test log
$crifanLib = new crifanLib();
$crifanLib->logInit("/var/www/120.26.121.239/public_html/php/access_token/logTest.log");
$crifanLib->logWrite("This is crifanLib log test message.");
$crifanLib->logDeinit();
?>
4.再去搞懂:
如何实现php的类的初始化
搜:
php 类的初始化
参考:
5.期间又遇到:
然后研究如何写构造函数:
最后才加上了构造函数:class crifanLib {
private $logFile;
function __construct() {
$this->logInit();
}
function logInit($inputLogFile = null) {
...
}
}
别处直接调用即可:include_once "crifanLib.php";
//test log
$crifanLib = new crifanLib();
$crifanLib->logWrite("This is crifanLib log test message not pass log file name");
【总结】
其实PHP中的定义类再引用类,和其他面向对象的语言的写法基本一致。
稍微特殊点的是:
(1)PHP v5中,构造函数统一命名为__construct -> 析构函数统一为__destruct。
(2)一定要注意:类内部,引用类自己的变量和函数,一定要前面加上$this->,否则会出错,并且没有任何提示的。。。
比如: