찾다

기본 PHP 구문을 사용하여 페이지를 렌더링하고 위젯 기능을 제공합니다.
  1. /**
  2. * 구성 매개변수 가져오기 및 설정은 일괄 정의를 지원합니다
  3. * $key가 연관 배열인 경우 구성은 K-V 형식으로 작성됩니다.
  4. * $key가 숫자 인덱스 배열인 경우 해당 구성은 반환됩니다 Array
  5. * @param string|array $key 구성 변수
  6. * @param array|null $value 구성 값
  7. * @return array|null
  8. */
  9. 함수 C($key,$value=null){
  10. 정적 $_config = 배열 ();
  11. $args = func_num_args();
  12. if($args == 1){
  13. if(is_string($key)){ //수신 키가 문자열인 경우
  14. return isset($_config[$key])?$_config[$key]:null;
  15. }
  16. if(is_array($key)){
  17. if(array_keys($key) !== 범위( 0, count($key) - 1)){ //수신 키가 연관 배열인 경우
  18. $_config = array_merge($_config, $key);
  19. }else{
  20. $ret = array ();
  21. foreach ($key를 $k로) {
  22. $ret[$k] = isset($_config[$k])?$_config[$k]:null;
  23. }
  24. return $ret;
  25. }
  26. }
  27. }else{
  28. if(is_string($key)){
  29. $_config[$key] = $value;
  30. }else {
  31. halt('전달된 매개변수가 올바르지 않습니다.');
  32. }
  33. }
  34. return null;
  35. }
  36. /**
  37. * 위젯 호출
  38. * @param string $name 위젯 이름
  39. * @param array $data 위젯에 전달된 변수 목록, 키는 변수 이름, 값은 변수 값
  40. * @return void
  41. */
  42. function W( $name, $data = array()){
  43. $fullName = $name.'Widget';
  44. if(!class_exists($fullName)){
  45. halt('Widget '.$name.' 존재하지 않음');
  46. }
  47. $widget = new $fullName();
  48. $widget->invoke($data);
  49. }
  50. /**
  51. * 프로그램 실행 종료
  52. * @param string $str 종료 이유
  53. * @param bool $display 콜 스택 표시 여부, 기본적으로 표시되지 않음
  54. * @return void
  55. * /
  56. function quit($str, $display=false){
  57. Log::fatal($str.' debug_backtrace:'.var_export(debug_backtrace(), true));
  58. header("Content- :text/html; charset=utf-8");
  59. if($display){
  60. echo "
    ";
  61. debug_print_backtrace();
  62. echo "> ; ";
  63. }
  64. echo $str;
  65. exit;
  66. }
  67. /**
  68. * 데이터베이스 인스턴스 가져오기
  69. * @return DB
  70. */
  71. function M(){
  72. $dbConf = C( 배열('DB_HOST','DB_PORT','DB_USER','DB_PWD','DB_NAME','DB_CHARSET'));
  73. return DB::getInstance($dbConf);
  74. }
  75. /* *
  76. * 파일이 존재하는 경우 포함
  77. * @param string $path 파일 경로
  78. * @return void
  79. */
  80. 함수 includeIfExist($path){
  81. if(file_exists($path)){
  82. include $path;
  83. }
  84. }
  85. /**
  86. * 일반 제어 카테고리
  87. */
  88. class SinglePHP {
  89. /**
  90. * 컨트롤러
  91. * @var 문자열
  92. */
  93. private $c;
  94. /**
  95. * 액션
  96. * @var 문자열
  97. */
  98. private $a;
  99. / * *
  100. * 싱글톤
  101. * @var SinglePHP
  102. */
  103. 비공개 정적 $_instance;
  104. /**
  105. * 생성자, 초기화 구성
  106. * @param array $conf
  107. */
  108. 비공개 함수 __construct($conf){
  109. C($conf);
  110. }
  111. 비공개 함수 __clone(){}
  112. /**
  113. * 단일 인스턴스 가져오기
  114. * @param array $conf
  115. * @return SinglePHP
  116. */
  117. 공용 정적 함수 getInstance($conf){
  118. if(!(self::$_instance instanceof self)){
  119. self::$_instance = new self($conf);
  120. }
  121. return self::$_instance;
  122. }
  123. /**
  124. * 애플리케이션 인스턴스 실행
  125. * @access public
  126. * @return void
  127. */
  128. 공개 함수 실행(){
  129. if(C('USE_SESSION') == true){
  130. session_start();
  131. }
  132. C('APP_FULL_PATH', getcwd().'/'.C( ' APP_PATH').'/');
  133. includeIfExist( C('APP_FULL_PATH').'/common.php');
  134. $pathMod = C('PATH_MOD');
  135. $pathMod = 비어 있음 ( $pathMod)?'NORMAL':$pathMod;
  136. spl_autoload_register(array('SinglePHP', 'autoload'));
  137. if(strcmp(strtoupper($pathMod),'NORMAL') === 0 | !isset($_SERVER['PATH_INFO'])){
  138. $this->c = isset($_GET['c'])?$_GET['c']:'색인';
  139. $this->a = isset($_GET['a'])?$_GET['a']:'Index';
  140. }else{
  141. $pathInfo = isset($_SERVER['PATH_INFO ' ])?$_SERVER['PATH_INFO']:'';
  142. $pathInfoArr =explod('/',trim($pathInfo,'/'));
  143. if(isset($pathInfoArr[0] ) && $pathInfoArr[0] !== ''){
  144. $this->c = $pathInfoArr[0];
  145. }else{
  146. $this->c = '색인';
  147. }
  148. if(isset($pathInfoArr[1])){
  149. $this->a = $pathInfoArr[1];
  150. }else{
  151. $this->a = '색인';
  152. }
  153. }
  154. if(!class_exists($this->c.'Controller')){
  155. halt('Controller'.$this->c. '존재하지 않습니다');
  156. }
  157. $controllerClass = $this->c.'Controller';
  158. $controller = new $controllerClass();
  159. if(!method_exists($controller , $this->a.'Action')){
  160. halt('Method'.$this->a.'존재하지 않습니다');
  161. }
  162. call_user_func(array($controller ,$ this->a.'Action'));
  163. }
  164. /**
  165. * 자동 로딩 기능
  166. * @param string $class 클래스명
  167. */
  168. 공용 정적 함수 autoload($class){
  169. if(substr($class ,- 10)=='컨트롤러'){
  170. includeIfExist(C('APP_FULL_PATH').'/Controller/'.$class.'.class.php');
  171. }elseif(substr($class ,- 6)=='위젯'){
  172. includeIfExist(C('APP_FULL_PATH').'/Widget/'.$class.'.class.php');
  173. }else{
  174. includeIfExist(C('APP_FULL_PATH').'/Lib/'.$class.'.class.php');
  175. }
  176. }
  177. }
  178. /**
  179. * 컨트롤러 클래스
  180. */
  181. 클래스 컨트롤러 {
  182. /**
  183. * 인스턴스 보기
  184. * @var 보기
  185. */
  186. private $_view;
  187. /**
  188. * 생성자, 뷰 인스턴스 초기화, 후크 호출
  189. */
  190. public 함수 __construct(){
  191. $this->_view = new View();
  192. $this->_init();
  193. }
  194. /**
  195. * 프리훅
  196. */
  197. 보호된 함수 _init(){}
  198. /**
  199. * 템플릿 렌더링 및 출력
  200. * @param null|string $tpl 템플릿 파일 경로
  201. * 매개변수는 앱/뷰/파일에 대한 상대 경로이며 다음과 같은 접미사 이름을 포함하지 않습니다. index/index
  202. * 매개변수가 비어 있는 경우 기본값은 $controller/$action.php
  203. * 매개변수에 "/"가 포함되어 있지 않으면 기본값은 $controller/$tpl
  204. * @ 무효 반환
  205. */
  206. 보호된 함수 표시($tpl=''){
  207. if($tpl === ''){
  208. $trace = debug_backtrace();
  209. $controller = substr($trace[1]['class'], 0, -10);
  210. $action = substr($trace[1]['function'], 0 , -6);
  211. $tpl = $컨트롤러 . '/' . $action;
  212. }elseif(strpos($tpl, '/') === false){
  213. $trace = debug_backtrace();
  214. $controller = substr($trace[1]['class '], 0, -10);
  215. $tpl = $controller . '/' . $tpl;
  216. }
  217. $this->_view->display($tpl);
  218. }
  219. /**
  220. * 뷰 엔진에 대한 템플릿 변수 설정
  221. * @param string $name 템플릿에서 사용할 변수 이름
  222. * @param mix $value 템플릿의 변수 이름에 해당하는 값
  223. * @ 반환 무효
  224. */
  225. 보호된 함수 할당($name, $value){
  226. $this->_view->할당($name,$value);
  227. }
  228. /**
  229. * 데이터를 json 형식으로 브라우저에 출력하고 코드 실행을 중지합니다
  230. * @param array $data 출력할 데이터
  231. */
  232. 보호된 함수 ajaxReturn($data) {
  233. echo json_encode($data);
  234. exit;
  235. }
  236. /**
  237. * 지정된 URL로 리디렉션
  238. * @param string $url 리디렉션할 URL
  239. * @param void
  240. */
  241. 보호된 함수 리디렉션($url){
  242. header("위치: $url");
  243. exit;
  244. }
  245. }
  246. /**
  247. * 수업 보기
  248. */
  249. 클래스 보기 {
  250. /**
  251. * 파일 디렉터리 보기
  252. * @var string
  253. */
  254. 비공개 $_tplDir;
  255. /**
  256. * 파일 경로 보기
  257. * @var string
  258. */
  259. 비공개 $_viewPath;
  260. /**
  261. * 변수 목록 보기
  262. * @var array
  263. */
  264. 비공개 $_data = array();
  265. /**
  266. * tplInclude용 변수 목록
  267. * @var array
  268. */
  269. 비공개 정적 $tmpData;
  270. /**
  271. * @param 문자열 $tplDir
  272. */
  273. 공용 함수 __construct($tplDir=''){
  274. if($tplDir == ''){
  275. $this->_tplDir = './'.C('APP_PATH').'/View/';
  276. }else{
  277. $this->_tplDir = $tplDir;
  278. }
  279. }
  280. /**
  281. * 뷰 엔진에 대한 템플릿 변수 설정
  282. * @param string $key 템플릿에서 사용할 변수 이름
  283. * @param mix $value 템플릿의 변수 이름에 해당하는 값
  284. * @ 반환 무효
  285. */
  286. 공용 함수 할당($key, $value) {
  287. $this->_data[$key] = $value;
  288. }
  289. /**
  290. * 템플릿 렌더링 및 출력
  291. * @param null|string $tplFile 앱/뷰/파일을 기준으로 한 템플릿 파일 경로에는 인덱스/인덱스와 같은 접미사 이름이 포함되지 않습니다.
  292. * @return void
  293. */
  294. 공용 함수 표시($tplFile) {
  295. $this->_viewPath = $this->_tplDir . $tpl파일 . '.php';
  296. unset($tplFile);
  297. extract($this->_data);
  298. include $this->_viewPath;
  299. }
  300. /**
  301. * 템플릿 파일에 다른 템플릿을 포함하는 데 사용됩니다.
  302. * @param string $path View 디렉터리에 대한 상대 경로
  303. * @param array $data 하위 템플릿에 전달되는 변수 목록, 키 은 변수 이름이고, value는 변수 값입니다
  304. * @return void
  305. */
  306. 공용 정적 함수 tplInclude($path, $data=array()){
  307. self::$tmpData = array(
  308. 'path' => C('APP_FULL_PATH') .' /보기/' . $path . '.php',
  309. 'data' => $data,
  310. );
  311. unset($path);
  312. unset($data);
  313. extract(self::$tmpData['data']);
  314. include self::$tmpData['path'];
  315. }
  316. }
  317. /**
  318. * 위젯 클래스
  319. * 사용 시 이 클래스를 상속받아서 Invoke 메소드를 오버라이드하고, Invoke 메소드에서 display
  320. 를 호출해야 합니다.*/
  321. 클래스 위젯 {
  322. /**
  323. * 인스턴스 보기
  324. * @var 보기
  325. */
  326. protected $_view;
  327. /**
  328. * 위젯명
  329. * @var string
  330. */
  331. protected $_widgetName;
  332. /**
  333. * 생성자, 뷰 인스턴스 초기화
  334. */
  335. 공용 함수 __construct(){
  336. $this->_widgetName = get_class($this);
  337. $dir = C('APP_FULL_PATH') . '/Widget/Tpl/';
  338. $this->_view = new View($dir);
  339. }
  340. /**
  341. * 처리 로직
  342. * @param 혼합 $data 매개변수
  343. */
  344. 공용 함수 호출($data) {}
  345. /**
  346. * 렌더 템플릿
  347. * @param string $tpl 템플릿 경로, 비어 있으면 클래스 이름을 템플릿 이름으로 사용
  348. */
  349. 보호된 함수 표시($tpl=''){
  350. if($tpl == ''){
  351. $tpl = $this-> ;_widgetName;
  352. }
  353. $this->_view->display($tpl);
  354. }
  355. /**
  356. * 뷰 엔진에 대한 템플릿 변수 설정
  357. * @param string $name 템플릿에서 사용할 변수 이름
  358. * @param mix $value 템플릿의 변수 이름에 해당하는 값
  359. * @ 반환 무효
  360. */
  361. 보호된 함수 할당($name, $value){
  362. $this->_view->할당($name,$value);
  363. }
  364. }
  365. /**
  366. * 데이터베이스 작업 클래스
  367. * 사용 방법:
  368. * DB::getInstance($conf)->query('select * from table');
  369. * 여기서 $conf는 연관 배열입니다. , 다음 키를 포함해야 합니다:
  370. * DB_HOST DB_USER DB_PWD DB_NAME
  371. * DB_PORT 및 DB_CHARSET을 사용하여 포트와 인코딩을 지정할 수 있으며 기본값은 3306 및 utf8입니다
  372. */
  373. 클래스 DB {
  374. /**
  375. * 데이터베이스 링크
  376. * @var 리소스
  377. */
  378. 비공개 $_db;
  379. /**
  380. * 마지막 sql 저장
  381. * @var string
  382. */
  383. 비공개 $_lastSql;
  384. /**
  385. * 마지막 SQL 문의 영향을 받은 행 수
  386. * @var int
  387. */
  388. 비공개 $_rows;
  389. /**
  390. * 마지막 SQL 실행 오류
  391. * @var string
  392. */
  393. 비공개 $_error;
  394. /**
  395. * 인스턴스 배열
  396. * @var 배열
  397. */
  398. 비공개 정적 $_instance = array();
  399. /**
  400. * 생성자
  401. * @param array $dbConf 구성 배열
  402. */
  403. 비공개 함수 __construct($dbConf){
  404. if(!isset($dbConf['DB_CHARSET']) ){
  405. $dbConf['DB_CHARSET'] = 'utf8';
  406. }
  407. $this->_db = mysql_connect($dbConf['DB_HOST'].':'.$dbConf['DB_PORT '],$dbConf['DB_USER'],$dbConf['DB_PWD']);
  408. if($this->_db === false){
  409. halt(mysql_error());
  410. }
  411. $selectDb = mysql_select_db($dbConf['DB_NAME'],$this->_db);
  412. if($selectDb === false){
  413. halt(mysql_error());
  414. }
  415. mysql_set_charset($dbConf['DB_CHARSET']);
  416. }
  417. 비공개 함수 __clone(){}
  418. /**
  419. * DB 클래스 가져오기
  420. * @param array $dbConf 구성 배열
  421. * @return DB
  422. */
  423. 정적 공개 함수 getInstance($ dbConf){
  424. if(!isset($dbConf['DB_PORT'])){
  425. $dbConf['DB_PORT'] = '3306';
  426. }
  427. $key = $dbConf[' DB_HOST'].':'.$dbConf['DB_PORT'];
  428. if(!isset(self::$_instance[$key]) || !(self::$_instance[$key] self) ){
  429. self::$_instance[$key] = new self($dbConf);
  430. }
  431. return self::$_instance[$key];
  432. }
  433. /**
  434. * 이스케이프된 문자열
  435. * @param string $str 이스케이프할 문자열
  436. * @return string 이스케이프된 문자열
  437. */
  438. 공용 함수 escape($str){
  439. return mysql_real_escape_string($str, $this->_db);
  440. }
  441. /**
  442. * select 문에 사용되는 쿼리
  443. * @param string $sql 쿼리할 sql
  444. * @return bool|array 쿼리가 성공하면 해당 배열을 반환하고, 실패하면 해당 배열을 반환하고, 거짓
  445. */
  446. 공용 함수 쿼리($sql){
  447. $this->_rows = 0;
  448. $this->_error = '';
  449. $this->_lastSql = $sql;
  450. $this->logSql();
  451. $res = mysql_query($sql,$this->_db);
  452. if($res === false){
  453. $this->_error = mysql_error($this->_db);
  454. $this->logError();
  455. false 반환;
  456. }else{
  457. $this->_rows = mysql_num_rows($res) ;
  458. $result = array();
  459. if($this->_rows >0) {
  460. while($row = mysql_fetch_array($res, MYSQL_ASSOC)){
  461. $result[ ] = $row;
  462. }
  463. mysql_data_seek($res,0);
  464. }
  465. return $result;
  466. }
  467. }
  468. /**
  469. * 삽입/업데이트/삭제 문에 사용되는 쿼리
  470. * @param string $sql 쿼리할 SQL
  471. * @return bool|int 쿼리가 성공하면 영향을 받은 레코드 수를 반환하고, 실패하면 false를 반환합니다
  472. */
  473. 공용 함수 실행($sql) {
  474. $this->_rows = 0;
  475. $this->_error = '';
  476. $this->_lastSql = $sql;
  477. $this->logSql();
  478. $result = mysql_query($sql, $this->_db) ;
  479. if ( false === $result) {
  480. $this-> ;_error = mysql_error($this->_db);
  481. $this->logError();
  482. false 반환;
  483. } else {
  484. $this->_rows = mysql_affected_rows($ this->_db);
  485. return $this->_rows;
  486. }
  487. }
  488. /**
  489. * 마지막 쿼리의 영향을 받은 레코드 수 가져오기
  490. * @return int 영향을 받은 레코드 수
  491. */
  492. 공용 함수 getRows(){
  493. return $this->_rows;
  494. }
  495. /**
  496. * 마지막 삽입 이후 생성된 자동 증가 ID 가져오기
  497. * @return int 자동 증가 ID
  498. */
  499. 공개 함수 getInsertId() {
  500. return mysql_insert_id($this->_db);
  501. }
  502. /**
  503. * 마지막 쿼리의 sql 가져오기
  504. * @return string sql
  505. */
  506. 공용 함수 getLastSql(){
  507. return $this->_lastSql;
  508. }
  509. /**
  510. * 마지막 쿼리의 오류 정보 가져오기
  511. * @return 문자열 오류 정보
  512. */
  513. 공용 함수 getError(){
  514. return $this->_error;
  515. }
  516. /**
  517. * SQL을 파일에 기록
  518. */
  519. 비공개 함수 logSql(){
  520. Log::sql($this- >_lastSql);
  521. }
  522. /**
  523. * 오류 로그를 파일에 기록
  524. */
  525. 비공개 함수 logError(){
  526. $str = '[SQL ERR]'.$this->_error.' SQL:'.$this->_lastSql;
  527. 로그::warn($str);
  528. }
  529. }
  530. /**
  531. * 로그 클래스
  532. * 사용 방법: Log::fatal('error msg');
  533. * 저장 경로는 App/Log, 날짜별로 저장됩니다.
  534. * Fatal 및 warning은 에 기록됩니다. .wf 파일의 .log
  535. */
  536. 클래스 로그{
  537. /**
  538. * 로그, SAE 환경 지원
  539. * @param string $msg 로그 내용
  540. * @param string $level 로그 수준
  541. * @param bool $wf 오류 로그 여부
  542. */
  543. 공용 정적 함수 write($msg, $level='DEBUG', $wf=false){
  544. if(function_exists('sae_debug')){ //如果是SAE, 则使用sae_debug函数打日志
  545. $msg = "[{$level}]".$msg;
  546. sae_set_display_errors(false);
  547. sae_debug(trim($msg));
  548. sae_set_display_errors (참);
  549. }else{
  550. $msg = date('[ Y-m-d H:i:s ]')."[{$level}]".$msg."rn";
  551. $logPath = C('APP_FULL_PATH').'/Log/'.date('Ymd').'.log';
  552. if($wf){
  553. $logPath .= '.wf';
  554. }
  555. file_put_contents($logPath, $msg, FILE_APPEND);
  556. }
  557. }
  558. /**
  559. * 列印fatal日誌
  560. * @param string $msg 日誌資訊
  561. */
  562. 公用靜態函數fatal($msg){
  563. self::write($msg, 'FATAL', true);
  564. }
  565. /**
  566. * 列印warning日誌
  567. * @param string $msg 日誌資訊
  568. */
  569. 公用靜態函數warn($msg){
  570. self::write($msg, 'WARN', true);
  571. }
  572. /**
  573. * 列印notice日誌
  574. * @param string $msg 日誌資訊
  575. */
  576. 公共靜態函數通知($msg) {
  577. self::write($msg, '注意');
  578. }
  579. /**
  580. * 列印debug日誌
  581. * @param string $msg 日誌資訊
  582. */
  583. 公用靜態函式debug($msg){
  584. self:: write($msg, 'DEBUG');
  585. }
  586. /**
  587. * 列印sql日誌
  588. * @param string $msg 日誌資訊
  589. */
  590. 公用靜態函數sql($msg){
  591. self::write($msg, 'SQL ');
  592. }
  593. }
  594. /**
  595. * ExtException類,記錄額外的異常資訊
  596. */
  597. class ExtException extends Exception{
  598. /**
  599. * @var 陣列
  600. */
  601. protected $extra;/**
  602. * @param string $message
  603. * @param array $extra
  604. * @param int $code
  605. * @param null $previous
  606. */
  607. public function __construct($message = "", $extra = array(), $code = 0, $previous = null){
  608. $this->extra = $ extra;
  609. parent::__construct($message, $code, $previous);
  610. }
  611. /**
  612. * 取得額外的異常資訊
  613. * @return array
  614. */
  615. public function getExtra(){
  616. return $this this this ->extra;
  617. }
  618. }
複製程式碼


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP의 지속적인 사용 : 지구력의 이유PHP의 지속적인 사용 : 지구력의 이유Apr 19, 2025 am 12:23 AM

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP 및 Python : 유사점과 차이점을 탐구합니다PHP 및 Python : 유사점과 차이점을 탐구합니다Apr 19, 2025 am 12:21 AM

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP와 Python : 다른 패러다임이 설명되었습니다PHP와 Python : 다른 패러다임이 설명되었습니다Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python : 그들의 역사에 깊은 다이빙PHP와 Python : 그들의 역사에 깊은 다이빙Apr 18, 2025 am 12:25 AM

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP와 Python 중에서 선택 : 가이드PHP와 Python 중에서 선택 : 가이드Apr 18, 2025 am 12:24 AM

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP 및 프레임 워크 : 언어 현대화PHP 및 프레임 워크 : 언어 현대화Apr 18, 2025 am 12:14 AM

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

PHP의 영향 : 웹 개발 및 그 이상PHP의 영향 : 웹 개발 및 그 이상Apr 18, 2025 am 12:10 AM

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?Apr 17, 2025 am 12:25 AM

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

See all articles

핫 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기