最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】php中如何写类和如何使用类

PHP crifan 3191浏览 0评论

【背景】

已经有了:

crifanLib.php

里面有一堆的函数代码。

现在想要封装成类,并且在别的php中调用该类的功能。

【折腾过程】

1.搜:

php中如何写类 如何使用类

参考:

一个php文件中怎么写一个类调用另外一个Php文件的类_百度知道

file1.php类如下:
class A{
  ...
}

file2.php调用file2.php中的类如下:
include "file1.php";
class B{
  $C = new A();
  .....
}

 

lessons/如何写好一个PHP的类 at master · monkee/lessons

PHP 类的变量与成员,及其继承、访问与重写要注意的问题 – ecalf – 博客园

class Myclass{

   public$prop = 123;

}

$obj = new Myclass();

 

找到官网的:

PHP: 类 – Manual

里面解释的比较清楚。

 

2.自己去试试。

期间又涉及到:

【已解决】PHP将log信息写入服务器中的log文件

 

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 类的初始化

参考:

PHP: 构造函数和析构函数 – Manual

 

5.期间又遇到:

【已解决】PHP中如何获得当前PHP文件的路径

 

然后研究如何写构造函数:

PHP 构造方法 __construct()_PHP基础教程

PHP: 构造函数和析构函数 – Manual

 

最后才加上了构造函数:

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->,否则会出错,并且没有任何提示的。。。

比如:

【已解决】PHP中的构造函数__construct不工作

转载请注明:在路上 » 【记录】php中如何写类和如何使用类

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
84 queries in 0.188 seconds, using 22.08MB memory