ホームページ php教程 php手册 PDO データベース操作クラス コードをカプセル化する

PDO データベース操作クラス コードをカプセル化する

Jun 13, 2016 pm 12:22 PM
class pdo php コード コピー カプセル化 操作する データベース 親切

コードをコピー コードは次のとおりです:


/**
* データベース PDO 操作
*/
class MysqlPdo {
public static $PDOStatement = null;
/**
* データベース接続パラメータの設定
* @var array
* @access public
*/
パブリック静的 $config = array();
/**
* 永続接続を使用するかどうか
* @var bool
* @access public
*/
パブリック静的 $pconnect = false
/**
* エラーメッセージ
* @var string
* @access public
*/
パブリック静的 $error = '';
/**
* シングルトン モード、Pdo クラスの唯一のインスタンスとデータベースの接続リソースを保存します
* @var object
* @access public
*/
保護された静的 $link;
/**
* データベースが接続されているかどうか
* @var bool
* @access public
*/
パブリック static $connected = false; 🎝>*/
public static $dbVersion = null;
/**
* データベースのバージョン
* @var string
* @access public
*/
public static $queryStr = ''; public static $lastInsertId = null;
/**
* 現在の SQL ステートメント
* @var string
* @access public
*/
public static $numRows = 0;
//トランザクション命令数
public static $transTimes = 0; / **
* 最後に挿入されたレコードの ID
* @var integer
* @access public
*/
public function __construct($dbConfig=''){
if (!class_exists('PDO')) throw_Exception("サポートされていません: PDO"); if パラメータが送信されない場合は、デフォルトのデータ定義が使用されます。
if (!is_array($dbConfig)) {
$dbConfig = array(
'hostname' => DB_HOST,
'username ' = > DB_USER、
'パスワード' => DB_NAME、
'dbms' =>
'dsn' => DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME
)
}
if(empty($dbConfig['hostname']); ) throw_Exception ("データベース構成が定義されていません");
self::$config = $dbConfig
if(empty(self::$config['params'])) self::$config['params '] = array();
/**
* 影響を受けるレコードの数を返します
* @var integer
* @access public
*/
if (!isset(self::$link) ) {
$configs = self::$config; (self ::$pconnect) {
$configs['params'][constant('PDO::ATTR_PERSISTENT')] = true;
}
try {
self::$link = new PDO ( $configs['dsn'], $configs['username'], $configs['password'],$configs['params']);
} catch (PDOException $e) {
throw_Exception( $e->getMessage());
//exit('接続に失敗しました:'.$e->getMessage());
}
if(!self::$link ) {
throw_Exception('PDO CONNECT ERROR');
return false;
self::$link->exec('SET NAMES '.DB_CHARSET); :$ dbVersion = self::$link->getAttribute(constant("PDO::ATTR_SERVER_INFO"));
// 接続が成功したとマークします
self::$connected = true;データベース接続からログアウトします 設定情報
unset($configs)>}
return self::$link
}
/**
* コンストラクター、
* @param $dbconfig データベース接続関連情報、array('ServerName', 'UserName', 'Password', 'DefaultDb', 'DB_Port', 'DB_TYPE')
*/
static function free() {
self::$PDOStatement = null
}
/*************************************ゴージャスな仕切り************ *********************************/
/* データベース操作*/
/
* クエリ結果を公開
* @access 関数
*** /
/* ************************************************** ************************************************* ***/
static function getAll($sql=null) {
self::query($sql);
//データセットを返します
$result = self::$PDOStatement ->fetchAll(constant('PDO::FETCH_ASSOC'));
return $result;
/*************************************************** ************************************************* ***/
static function getRow ($sql=null) {
self::query($sql);
// 配列セットを返します
$result = self::$PDOStatement->fetch(constant('PDO::FETCH_ASSOC) '),constant(' PDO::FETCH_ORI_NEXT'));
return $result;
/**
* すべてのクエリ データを取得
* @access 関数
* @return 配列
*/
静的関数 doSql($sql='') {
if(self ::isMainIps($sql)) {
return self::execute($sql);
}else {
return self::getAll($sql); }
}
/**
* クエリ結果の取得
* @access 関数
* @param string $sql SQL コマンド
* @param integer $seek ポインタ位置
* @return array
*/
静的関数 findById($tabName,$priId,$fields='*'){
$sql = 'SELECT %s FROM %s WHERE id=%d' ;
return self::getRow(sprintf($sql, self::parseFields($fields), $tabName, $priId));
/**
* レコード検索
* @access 関数
* @param string $tables データテーブル名
* @parammixed $where クエリ条件
* @param string $fields フィールド名
* @param string $ordersort
* @param string $limit 取得するデータの数
* @param string $group grouping
* @param string $having
* @param boolean $ Lock Lock
* @return ArrayObject
を追加するかどうか*/
static function find($tables,$where="",$fields='*',$order=null,$limit=null,$group=null,$ being=null) {
$sql = 'SELECT '.self::parseFields($fields)
.' FROM '.$tables
.self::parseWhere($where)
.self::parseGroup($group)
.self::parseHaving($having)
.self::parseOrder( $order)
.self::parseLimit($limit);
$dataAll = self::getAll($sql);
if(count($dataAll)==1){$rlt=$dataAll[0];}else{$rlt=$dataAll;}
return $rlt;
}
/**
* 挿入 (単一) レコード
* @access 関数
* @parammixed $data data
* @param string $table データテーブル名
* @return integer
*/
static function add($data,$table) {
//过滤提交数据
$data=self::filterPost($table ,$data);
foreach ($data as $key=>$val){
if(is_array($val) && strto lower($val[0]) == 'exp') {
$val = $ val[1]; // 表达式を使用します ???
}elseif (is_scalar($val)){
$val = self::fieldFormat($val);
}else{
// 去掉复合对オブジェクト
続行;
}
$data[$key] = $val;
}
$fields = array_keys($data);
array_walk($fields, array($this, 'addSpecialChar'));
$fieldsStr = implode(',', $fields);
$values = array_values($data);
$valuesStr = implode(',', $values);
$sql = 'INSERT INTO '.$table.' ('.$fieldsStr.') VALUES ('.$valuesStr.')';
return self::execute($sql);
}
/**
* レコード更新
* @access 関数
* @parammixed $sets data
* @param string $table データテーブル名
* @param string $where 更新条件
* @param string $limit
* @param string $order
* @return integer
*/
static function update($sets,$table,$where,$limit=0,$order='') {
$sets = self ::filterPost($table,$sets);
$sql = 'UPDATE '.$table.' SET '.self::parseSets($sets).self::parseWhere($where).self::parseOrder($order).self::parseLimit($limit);
return self::execute($sql);
}
/**
* 特定のフィールドの値を保存します
* @access function
* @param string $field 保存するフィールドの名前
* @param string $value フィールドの値
* @param string $ table data table
* @param string $where 保存条件
* @param boolean $asString フィールド値が文字列かどうか
* @return void
*/
static function setField($field, $value, $table, $condition="", $asString=false) {
// 如果有'(' SQL命令更新否か更新文字列内容は纯字符串
if(false === strpos($value,'(') || $asString) $value = '"'.$value.' "';
$sql = 'UPDATE '.$table.' SET '.$field.'='.$value.self::parseWhere($condition);
return self::execute($sql );
}
/**
* レコードの削除
* @access function
* @parammixed $where は条件付きマップ、配列、または文字列
* @param string $table データテーブル名
* @param string $limit
* @param string $order
* @return integer
*/
静的関数 Remove($where,$table,$limit='',$order='') {
$sql = ' DELETE FROM '.$table.self::parseWhere($where).self::parseOrder($order).self::parseLimit($limit);
return self::execute($sql); }
/**
----------------------------------------------- -----------
* データの変更または保存 (単一テーブル操作の場合のみ)
* 主キー ID がある場合は変更され、主キー ID がない場合は変更されます
* レコードを変更します:
--------------------------------- ----------------- ---------------------
* @アクセス関数
-- ------------------------ ------------------------ -------
* @param $tabName テーブル名
* @param $aPost フォーム $_POST を送信
* @param $priId 主キー ID
* @param $aNot A フィールドまたは除外される配列
* @param $aCustom データベースに追加され、保存されたカスタマイズされた配列
* @param $isExits すでに存在するかどうか 存在するかどうか: true、存在しない: false
--- --------------------------------- ------------------- -------
* @return Boolean 変更または保存が成功したかどうか
-------- ------- --------------------------------
*/
静的関数 saveOrUpdate($tabName, $aPost, $priId="", $aNot="", $aCustom="", $isExits=false) {
if(empty($tabName) || !is_array($aPost) || is_int($aNot)) return false;
if(is_string($aNot) && !empty($aNot)) $aNot = 配列($aNot);
if(is_array($aNot) && is_int(key($aNot))) $aPost = array_diff_key($aPost, array_flip($aNot)); && is_string(key($aCustom))) $aPost = array_merge($aPost,$aCustom);
if (empty($priId) && !$isExits) { //新增
$aPost = array_filter( $aPost, array($this, 'removeEmpty'));
return self::add($aPost, $tabName);
} else { //修正
return self::update($aPost, $tabName, "id=".$priId);
}
}
/**
* 最新のクエリの SQL ステートメントを取得します
* @access function
* @param
* @return String 実行された SQL
*/
static function getLastSql() {
$link = self::$link;
if (!$link ) は false を返します。
return self::$queryStr;
}
/**
* 最後に挿入された ID を取得します
* @access function
* @param
* @return integer 最後に挿入されたデータ ID
*/
static function getLastInsId(){
$link = self::$link;
if (!$link ) は false を返します。
self::$lastInsertId を返します;
}
/**
* DB バージョンの取得
* @access 関数
* @param
* @return string
*/
static function getDbVersion(){
$link = self::$link;
if (!$link ) は false を返します。
self::$dbVersion を返します;
}
/**
* データベーステーブル情報の取得
* @access function
* @return array
*/
static function getTables() {
$info = array();
if(self::query("SHOW TABLES")) {
$result = self::getAll();
foreach ($result as $key => $val) {
$info[$key] = current($val);
}
}
$info を返します。
}
/**
* データテーブルのフィールド情報を取得
* @access function
* @return array
*/
static function getFields($tableName) {
// 获取数据库联接
$link = self::$link;
$sql = "SELECT
ORDINAL_POSITION ,COLUMN_NAME, COLUMN_TYPE, DATA_TYPE,
IF(ISNULL(CHARACTER_MAXIMUM_LENGTH), (NUMERIC_PRECISION NUMERIC_SCALE), CHARACTER_MAXIMUM_LENGTH) AS MAXCHAR,
IS_NULLABLE, N_DEFAULT、COLUMN_KEY、EXTRA、 COLUMN_COMMENT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = :tabName AND TABLE_SCHEMA='".DB_NAME."'";
self::$queryStr = sprintf($sql, $tableName);
$sth = $link->prepare($sql);
$sth->bindParam(':tabName', $tableName);
$sth->execute();
$result = $sth->fetchAll(constant('PDO::FETCH_ASSOC'));
$info = array();
foreach ($result as $key => $val) {
$info[$val['COLUMN_NAME']] = array(
'postion' => $val['ORDINAL_POSITION'] ,
'name' => $val['COLUMN_NAME'],
'type' => $val['COLUMN_TYPE'],
'd_type' => ]、
'length' => $val['MAXCHAR']、
'notnull' => (strto lower($val['IS_NULLABLE']) == "no")、
'デフォルト' => $val['COLUMN_DEFAULT'],
'primary' => (strto lower($val['COLUMN_KEY']) == 'pri'),
'autoInc' => strto lower($val['EXTRA']) == 'auto_increment'),
'コメント' => $val['COLUMN_COMMENT']
);
}
// 有错误则抛出异常
self::haveErrorThrowException();
$info を返します;
}
/**
* データベースを閉じる
* @access 関数
*/
static function close() {
self::$link = null;
}
/**
* SQL コマンドのセキュリティ フィルタリング
* @access 関数
* @param string $str SQL コマンド
* @return string
*/
static functionscape_string($str) {
returnaddslashes($str);
}
/************************************************* ************************************************* *****/
/* 内部操作方法 */
/************************************************* ************************************************* *****/
/**
* エラーが発生し、例外がスローされます
* @access function
* @return
*/
静的関数 haveErrorThrowException() {
$obj = empty(self::$PDOStatement) ? self::$link : self::$PDOStatement;
$arrError = $obj->errorInfo();
if(count($arrError) > 1) { // 错误情報あり
//$this->rollback();
self::$error = $arrError[2]。 "

[ SQL语 ] : ".self::$queryStr;
//throw_Exception($this->error);
throw_Exception(self::$error);
false を返します。
}
// 主要针对execute() メソッド抛出异常
if(self::$queryStr=='')throw_Exception('クエリは空でした

[ SQL语句 ] :');
}
/**
* where 分析
* @access 関数
* @parammixed $where クエリ条件
* @return string
*/
静的関数 parseWhere($where) {
$whereStr = '';
if(is_string($where) || is_null($where)) {
$whereStr = $where;
}
return empty($whereStr)?'':' WHERE '.$whereStr;
}
/**
* order分析
* @access function
* @param mixed $order 排序
* @return string
*/
静的関数 parseOrder($order) {
$orderStr = '';
if(is_array($order))
$orderStr .= ' ORDER BY '.implode(',', $order);
else if(is_string($order) && !empty($order))
$orderStr .= ' ORDER BY '.$order;
$orderStr を返す;
}
/**
* limit分析
* @access function
* @param string $limit
* @return string
*/
静的関数 parseLimit($limit) {
$limitStr = '';
if(is_array($limit)) {
if(count($limit)>1)
$limitStr .= ' LIMIT '.$limit[0].' 、「.$limit[1].」 ';
else
$limitStr .= ' LIMIT '.$limit[0].' ';
} else if(is_string($limit) && !empty($limit)) {
$limitStr .= ' LIMIT '.$limit.' ';
}
$limitStr を返す;
}
/**
* group分析
* @access function
* @parammixed $group
* @return string
*/
静的関数 parseGroup($group) {
$groupStr = '';
if(is_array($group))
$groupStr .= ' GROUP BY '.implode(',', $group);
else if(is_string($group) && !empty($group))
$groupStr .= ' GROUP BY '.$group;
return empty($groupStr)?'':$groupStr;
}
/**
* getting分析
* @access function
* @param string $having
* @return string
*/
静的関数 parseHaving($having) {
$havingStr = '';
if(is_string($having) && !empty($having))
$havingStr .= ' HAVING '.$having;
$havingStr を返す;
}
/**
* フィールド分析
* @access function
* @parammixed $fields
* @return string
*/
static function parseFields($fields) {
if(is_array($fields)) {
array_walk($fields, array($this) , 'addSpecialChar'));
$fieldsStr = implode(',', $fields);
}else if(is_string($fields) && !empty($fields)) {
if( false === strpos($fields,'`') ) {
$fields =explode(' ,',$フィールド);
array_walk($fields, array($this, 'addSpecialChar'));
$fieldsStr = implode(',', $fields);
}else {
$fieldsStr = $fields;
}
}else $fieldsStr = '*';
$fieldsStr を返す;
}
/**
* データ更新時に呼び出される分析を設定します
* @access function
* @parammixed $values
* @return string
*/
プライベート関数 parseSets($sets) {
$setsStr = '';
if(is_array($sets)){
foreach ($sets as $key=>$val){
$key = self::addSpecialChar($key);
$val = self::fieldFormat($val);
$setsStr .= "$key = ".$val.",";
}
$setsStr = substr($setsStr,0,-1);
}else if(is_string($sets)) {
$setsStr = $sets;
}
$setsStr を返します。
}
/**
* フィールドの書式設定
* @access function
* @parammixed $value
* @returnmixed
*/
静的関数 fieldFormat(&$value) {
if(is_int($value)) {
$value = intval($value) ;
} else if(is_float($value)) {
$value = floatval($value);
} elseif(preg_match('/^(w*( |-|*|/)?w*)$/i',$value)){
// 在字段の值里面直接使用をサポートします。字段
// 例 (スコア 1) (名前) 必須包含号
$value = $value;
}else if(is_string($value)) {
$value = '''.self::escape_string($value).''';
}
$value を返します。
}
/**
*
の行にあるフィールド名とテーブル名に ` を追加します。* 命令で使用されているキーワードが mysql に対して正しいことを確認してください。
* @access function
* @parammixed $value
* @return混合
*/
static function addSpecialChar(&$value) {
if( '*' == $value || false !== strpos($value, '(') || false !== strpos($value,'.') || false !== strpos($value,'`')) {
//如果包含* または使用了sql メソッド不作处処理
} elseif(false === strpos($value,'`') ) {
$value = '`'.trim($value).'`'
}
$value を返す;
}
/**
----------------------------------------------- ----------
* 空の要素を削除
------------------------ ---- ------------------------
* @access 関数
---------- ----- ----------------------------------------
* @parammixed$値
-------------------------------------- ----- -------------
* @returnmixed
----------------------- ---- ----------------------------
*/
静的関数 RemoveEmpty($value){
return !empty($value);
/* *
* 主に SELECT、SHOW およびその他の命令のためのクエリの実行
* @access 関数
* @param string $sql SQL コマンド
* @returnmixed
*/
static function query($sql='') {
// 获取数据库联接
$link = self::$link
if ( !$link ) return; false;
self::$queryStr = $sql;
//释放次回の查询結果
if ( !empty(self::$PDOStatement) ) self::free(); self::$PDOStatement = $link->prepare(self::$queryStr);
$bol = self::$PDOStatement->execute();
// 有错误则抛出异常
self::haveErrorThrowException();
return $bol;
/**
* データベース操作メソッド
* @access 関数
* @param string $sql 実行文
* @param boolean $lock ロックするかどうか(デフォルトはロックなし)
* @return void
public functionexecute($sql='',$lock=false) {
if(empty($sql)) $sql = $this->queryStr;
return $this->_execute ($ SQL);*/
/**
* INSERT、UPDATE、DELETE の実行文
* @access 関数
* @param string $sql SQL コマンド
* @return integer
*/
static 関数の実行($ sql='') {
// 获取数据库联接
$link = self::$link;
if ( !$link ) return false;
self::$queryStr = $sql;
//释放次回的查询結果
if ( !empty(self::$PDOStatement) ) self::free();
$result = $link->exec(self::$queryStr);
// 有错误则抛出异常
self::haveErrorThrowException();
if ( false === $result) {
return false;
} else {
self::$numRows = $result;
self::$lastInsertId = $link->lastInsertId();
self::$numRows を返します;
}
}
/**
* データベース変更操作かどうか
* @access private
* @param string $query SQL コマンド
* @return boolen クエリ操作の場合は false を返します
*/
static function isMainIps($query) {
$queryIps = 'INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|LOAD DATA|SELECT .* INTO|COPY |ALTER|GRANT|REVOKE|LOCK|UNLOCK';
if (preg_match('/^s*"?(' . $queryIps . ')s /i', $query)) {
return true;
}
return false;
}
/**
* POST 送信データをフィルターします
* @access private
* @parammixed $data POST 送信データ
* @param string $table データ テーブル名
* @returnmixed $newdata
*/
static function filterPost($table,$data) {
$table_column = self::getFields($table);
$newdata=array( );
foreach ($table_column as $key=>$val){
if(array_key_exists($key,$data) && ($data[$key])!==''){
$newdata[$key] = $data[$key];
}
}
return $newdata;
/**
* トランザクション開始
* @access function
* @return void
*/
startTrans() {
//データロールバックは
$link = self::$link;
if ( !$link ) return false;
if (self::$transTimes == 0) {
$link->beginTransaction();
}
return ;
/**
* 非自動送信ステータスでのクエリ送信に使用されます
* @access function
* @return boolen
*/
function commit() {
$link = self::$link;
if ( !$link ) return false;
if (self::$transTimes > 0) {
$result = $link->commit();
self::$transTimes = 0;
if(!$result){
throw_Exception(self::$error());
}
}
return true;
}
/**
* トランザクションのロールバック
* @access 関数
* @return boolen
*/
public function rollback() {
$link = self::$link;
if (!$link ) は false を返します。
if (self::$transTimes > 0) {
$result = $link->rollback();
self::$transTimes = 0;
if(!$result){
throw_Exception(self::$error());
false を返します。
}
}
true を返します。
}
}
?>


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles