macromolecule.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 196 行

PHP
196
字号
<?php//// +----------------------------------------------------------------------+// | PHP Version 4                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license,       |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net>                |// +----------------------------------------------------------------------+//// $Id: Macromolecule.php,v 1.5 2003/05/13 01:18:17 jmcastagnetto Exp $//require_once "Science/Chemistry.php";require_once "Science/Chemistry/Atom.php";require_once "Science/Chemistry/Molecule.php";/** * Represents a macromolecule, composed of several * Science_Chemistry_Molecule objects * * @author  Jesus M. Castagnetto <jmcastagnetto@php.net> * @version 1.0 * @access  public * @package Science_Chemistry */class Science_Chemistry_Macromolecule {    /**     * Macromolecule's name     *     * @var     string     * @access   private     */    var $name;    /**     * Array of molecular objects     *     * @var     array     * @access  private     */    var $molecules;    /**     * Number of molecules/subunits     *     * @var     int     * @access  private     */    var $num_molecules;    /**     * Constructor for the class, requires a macromolecule name     * and an optional array of Science_Chemistry_Molecule objects     *      * @param   string  $name     * @param   optional    array   $molecules     * @return  object  Science_Chemistry_Macromolecule     * @access  public     * @see     $name     * @see     initMacromolecule()     */    function Science_Chemistry_Macromolecule($name, $molecules="") {        $this->name = $name;        if (!empty($molecules))            if (!$this->initMacromolecule($molecules))                return null;    }        /**     * Initializes the array of Science_Chemistry_Molecule objects     *      * @param   array   $molecules     * @return  boolean     * @access  public     * @see     $num_molecules     * @see     $molecules     * @see     addMolecule()     */    function initMacromolecule($molecules) {        if (!is_array)            return false;        for ($i=0; $i < count($molecules); $i++)            if(!$this->addMolecule($molecules[$i]))                return false;        return true;    }    /**     * Adds a Science_Chemistry_Molecule object to the list of molecules in the macromolecule     *      * @param   object  Science_Chemistry_Molecule   $mol     * @return  boolean     * @access  public     * @see     initMacromolecule()     */    function addMolecule($mol) {        if (Science_Chemistry_Molecule::isMolecule($mol)) {            $this->molecules[] = $mol;            $this->num_molecules++;            return true;        } else {            return false;        }    }    /**     * Returns an array of Science_Chemistry_Molecule objects     *     * @return  array     * @access  public     * @see     $molecules     */    function getMolecules() {        return $this->molecules;    }    /**     * Checks if the object is an instance of Science_Chemistry_Macromolecule     *     * @param   object  Science_Chemistry_Macromolecule $obj     * @return  boolean     * @access  public     */    function isMacromolecule($obj) {        return  (is_object($obj) &&                  (strtolower(get_class($obj)) == strtolower("Science_Chemistry_Macromolecule") ||                  is_subclass_of($obj, strtolower("Science_Chemistry_Macromolecule")))                );    }    /**     * Returns a string representation of the macromolecule     * as a multiple molecule XYZ-format file     *     * @return  string     * @access  public     * @see toString()     */    function toXYZ() {        $out = "# Number of molecules: ".$this->num_molecules."\n";        for ($i=0; $i < $this->num_molecules; $i++)            $out .= "# Molecule ".($i+1)."\n".$this->molecules[$i]->toString()."\n";        return $out;    }    /**     * Returns a string representation of the macromolecule     * as a multiple molecule XYZ-format file     * Alias of toXYZ()     *     * @return  string     * @access  public     * @see toString()     */    function toString() {        return $this->toXYZ();    }    /**     * Returns a CML representation of the molecule     * Accepts an optional id, and a flag to signal     * printing of the connection table     *     * @param   optional    string  $id     * @param   optional    boolean $connect     * @return  string     * @access  public     */    function toCML($title="macromolecule", $id="macromol1", $connect=false) {        $out = "<molecule title=\"$title\" id=\"$id\">\n";        $out .= "<list title=\"molecules\">\n";        for ($i=0; $i < $this->num_molecules; $i++) {            $mol =& $this->molecules[$i];            $out .= $mol->toCML($mol->name, ($i+1), $connect);        }        $out .= "</list>\n</molecule>\n";        return $out;    }} // end of Science_Chemistry_Macromolecule// vim: expandtab: ts=4: sw=4?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?