php基礎コード大全(絶えず完備中)
298256 ワード
以下はベースのPHPのコードで、どんどん整備中~
1 // (syntax error) , , 。
2
3
4 /* 【 】 */
5 , // MIN_WIDTH
6 // $var_name
7 // varName
8 // <<
9 、 // func_name.php
10 、 // private $_name _func
11 I_ // interface I_Name
12
13 /* */
14 array(), echo(), empty(), eval(), exit(), isset(), list(), print(), unset()
15 echo, print 。
16
17 /* */
18 PATH_SEPARATOR // (Windows , Unix )
19 DIRECTORY_SEPARATOR //
20 PHP_EOL //
21 PHP_VERSION //PHP
22 PHP_OS //PHP
23 PHP_SAPI // , PHP_SAPI=='cli'
24 PHP_INT_MAX INT ,32 2147483647
25 PHP_INT_SIZE INT ,32 4(4 )
26 M_PI //
27 M_E //
28
29 //PHP
30 php_sapi_name() // PHP WEB
31 PHP_SAPI !
32 :SAPI(the Server API, SAPI)
33 :aolserver、apache、apache2filter、apache2handler、caudium、cgi、cgi-fcgi、cli、 continuity、embed、isapi、litespeed milter、nsapi、phttpd、pi3web、roxen、thttpd、tux、webjames
34
35
36 /* */
37 - 、 、 、 :
38 - 、 、 :
39
40 /* */
41 $i = 3; $k = 'i'; echo $$k; // 3
42 function func() {echo 'hello!';} $i = 'func'; $i(); // hello
43 $i = '1234'; $k = 3; echo $i[$k]; // 4
44 class CLS{public $k = 'hello';} $i = 'CLS'; $j = new $i; echo $j->k;
45 class CLS{public $k = 'hello';} $i = 'k'; $j = new CLS; echo $j->$i;
46 class CLS{public function k(){echo 'hello';}} $i='k'; $j=new CLS; $j->$i();
47
48 /* */
49 *
50 $var_name = "class_name";
51 $$var_name = "PHP0913"; // $class_name = "PHP0913";$class_name
52 var_dump($class_name); // var_dump($$var_name);
53
54 /* */
55 get_defined_vars // ( 、 )
56
57
58 /* unset() */
59 * unset() ,
60 * , , ,
61
62 echo "
";
63 $v3 = ' ';
64 $v4 = &$v3;
65 unset($v4);
66 var_dump($v3, $v4);
67
68 /* */
69 * , ,
70
71
72 /* / */
73 $GLOBALS
74 $_COOKIE
75 $_ENV
76 $_FILES
77 $_GET
78 $_POST
79 $_REQUEST
80 $_SERVER
81 $_SESSION
82
83
84 /* */
85 define( , , [ ]) //true /false
86 const = // ,
87
88 constant($name) //
89 // :echo constant('-_-');
90
91
92 /* */
93 defined
94 get_defined_constants
95
96
97 /* */
98 __FILE__
99 __LINE__
100 __DIR__
101 __FUNCTION__
102 __CLASS__
103 __METHOD__
104 __NAMESPACE__
105
106
107 /* */
108 4 , 4*8=32 , 2147483647, -2147483648, 1
109 ,1 ,0
110
111
112 /* */
113 ,
114 , ( “0” “0x”)
115 dec
116 bin
117 oct
118 hex
119 hexdec() hex2dec()
120 dechex() dec2hex()
121 bindec() bin2dec()
122 decbin() dex2bin()
123 octdec() oct2dec()
124 decoct() dec2oct()
125
126
127 /* */
128 !!!
129 , !
130 :+/- 1.8E308
131 PHP :14
132
133 /* */
134 ,
135
136 /* */
137 !!!
138 eval PHP
139 , 。 :"aaa{$bbb}ccc"
140 ASCII
141 "\x61" -> a // 0, 0x
142 "\x49\x54\x43\x41\x53\x54" -> ITCAST
143 ASCII chr()
144 ASCII ord()
145 #
146
147 \r
148 \t
149 \\
150 \$
151 \v
152 \e Escape
153 \f
154 \" "
155 \[0-7]{1,3}
156 \x[0-9A-Fa-f]{1,2}
157
158
159
160 /* */
161 herodoc - ,
162 $str = <<<AAA
163
164 AAA;
165
166 nowdoc - ,
167
168 $str = <<<'AAA'
169
170 AAA;
171
172
173 /* */
174 , 。 ( 、 、 ),
175 $str = "abcd";
176 echo $str[3]; // d
177 echo $str{0}; // a
178
179
180 /* 【 】 */
181 // /
182 gettype($var) //
183 settype($var, $type) //
184
185 //
186 is_int
187 is_float
188 is_null
189 is_string
190 is_resource
191 is_array
192 is_bool
193 is_object
194 is_numeric
195
196 //
197 boolval
198 floatval
199 intval
200 strval
201
202 //
203 (int)
204 (float)
205 (string)
206 (bool)
207 (array)
208 (object)
209 (unset) // NULL
210 (binary) b //
211
212 var_dump 。
213 , 。
214 , 。
215 var_export($var [,bool $return]) //
216 $return: true,
217 print_r
218 empty
219 isset
220
221 /* 【 】 */
222 //if
223 if ( ) :
224 ;
225 elseif ( ) :
226 ;
227 else :
228 ;
229 endif;
230
231 //
232 HTML
233 { : , } endif;
234 endif
235 endwhile
236 endfor
237 endforeach
238 endswitch
239
240
241 /* 【switch】 */
242 switch ( ) {
243 case 1:
244 ;
245 [break;]
246 case 2:
247 ;
248 [break;]
249 case 3:
250 case 4:
251 ;
252 [break;]
253 default:
254 ;
255 [break;]
256 }
257 switch ,
258 ,
259 break
260
261
262 /* 【for 】 */
263 for ( ; ; ) {
264
265 }
266
267 N ,
268 1
269 N+1
270 N
271
272 :
273 1. for ,
274 2. for
275 3. ,
276 a. , null, ,
277 。 for 。
278 b. , ,
279 c. ,
280 4. ,
281 , ,
282 5. for
283 :count()
284 6. ,
285
286
287 /* 【goto】5.3+ */
288
289 。
290 PHP goto , ,
291 , 。
292 switch 。
293 switch, break。
294 (switch) , 。 , 。
295 goto a;
296 echo 'Foo';
297 a:
298 echo 'Bar';
299
300
301 /* 【 】 */
302 require / include / require_once / include_once
303 ,
304
305 , require , ,
306 , require
307 【 】
308 , PHP ;
309 , ;
310 , PHP 。
311 require: , E_COMPILE_ERROR , 。
312 include: , E_WARNING , 。
313
314 # require_once/include_once
315
316
317 /* 【 】 */
318 , 。
319 ./file file file
320 file ( ):
321 。
322 , 。
323 __DIR__
324 __FILE__
325
326 include_path
327 set_include_path() include_path, ,
328 path
329
330 include_path
331
332 get_include_path() include_path ,
333
334 , Windows , Linux
335 PATH_SEPARATOR
336
337 :
338 1. include_path
339 2.
340 3.
341 , ,include_path
342
343
344 /* 【return】 */
345 return require , ,return
346 return ,
347 return
348
349
350 /* 【 】 */
351 die / exit
352 return
353 die exit
354 die(" ");
355 sleep() ( : )
356 30 ,PHP max_execution_time
357 :sleep(12);
358 usleep()
359 time_sleep_until
360
361
362 /* 【 】 */
363 1. , , !
364 2. , !
365 3. , , !
366 4. ,
367 ! !
368 , !
369 5.
370 6. ,
371 7. 【 】
372
373 $func_name = "sayHello";
374 $func_name(); // sayHello()
375 : , !
376 8. , !
377 9. parameter, argument
378 null,
379 , 。
380 , & ,
381 ?
382 a.
383 b.
384 c.
385 10.
386 a. , !
387 ,
388 b. ,
389 , ,
390 c. , 、null
391 d.
392 11.
393 a.
394 , NULL
395 b.
396 ,
397 c.
398 1) ,
399 2) 【 】
400 func_get_args() ,
401 func_get_arg() , ,e.g: func_get_arg(0)
402 func_num_args()
403 12. 【return】
404 a. , , return
405 b. return ,
406 c.
407 d. ( )
408 1)
409 2) :
410 - , &
411 - , &
412 , ,
413 - ,
414 - , &
415 function &returns_reference(){return $someref;}
416 $newref =& returns_reference();
417 3)
418
419
420 /* 【 】 */
421 a.
422 1) , ,
423 2) -
424 3) - ,
425
426 b. , , , 。
427 $GLOBALS $_COOKIE $_ENV $_FILES $_GET
428 $_POST $_REQUEST $_SERVER $_SESSION
429 c. $GLOBALS
430 1) , !
431 2) , $GLOBALS
432 3) $GLOBALS
433 - $GLOBALS !
434 , $GLOBALS !
435 , , ,
436 - , ,
437 , $GLOBALS
438 - , $GLOBALS
439 4) PHP , ,
440 4) global ( )
441 ' '!
442 global $var; // $var = &$GLOBALS['var'];
443 $GLOBALS!!!
444 global , 。
445 $GLOBALS , 。
446 global , , , include require 。
447 d.
448 1) ,
449 2) 。
450 , !
451
452
453 /* 【 】 */
454 1. ,
455 2. ,
456 3.
457 static
458 , , 。
459 , 。
460 static 。
461
462
463 /* 【 】 */
464 !
465 ( ), !
466 ( ), ,
467 !
468 。 !
469 : ,
470
471
472 /* 【 / 】 */
473 , (closures), 。
474
475 1. , 。
476 2. PHP , 。
477 3. 。
478 4. Closure
479 5.
480 6. use($param) ,
481 7.
482 $func = function ($e) {
483 echo $e;
484 }; // , ,
485 var_dump($func); //
486 $func('ITCAST'); //
487 , 。Closure
488 //use
489 , 。
490 use 。 !
491 use :
492 use
493 function out() {
494 $v = "in out";
495 $func = function () use (& $v) {
496 var_dump($v);
497 }
498 }
499 use , 。
500 //
501 ' ' ( )
502 :
503 PHP array_map() , ,
504 (array) = array_map( , );
505 $result_arr = array_map(function ($v) {return $v3}, $arr);
506
507 //
508 function closureCreater() {
509 $x = 1;
510 return function($fun = null) use(&$x) {//
511 echo "
" . $x++;
512 $fun and $fun();
513 };
514 }
515
516 $x = "hello world";
517 $test = closureCreater();
518 $test();
519 $test(function(){ echo "closure test one"; });
520 $test(function(){ echo "closure test two"; });
521 $test(function() use($x){ echo "
".$x;});
522
523 //
524 $x = 'outer param.';
525 $arr = array();
526 $arr[] = function($str)use($x){ return $str.$x; };
527 echo $arr[0]('test fun in arr,');
528
529
530 /* 【 】 */
531 : , 。
532 : , 。 0 ,
533 count($var [,$mode]) //
534 $mode , 1 true
535 $var , 1;$var null , 0
536
537 //
538 ($arr[1])
539 ($arr = array('1'=>'abc'); $arr[1])
540 , ($arr = array('a'=>'aaa'); $arr['a'])
541 , , ($arr = array('a'=>'aaa'); "$arr[a]")
542
543 /* 【 】 */
544 current/pos , 。
545 key ,
546 next , 。 , 。
547 prev , , 。
548 end ,
549 reset ,
550
551 each / 。
552 4 , 0 key , 1 value
553 each() ,
554 。
555 each , reset()。
556
557 1. , key(), , false。 key() null。
558 2. , next/prev , reset/end
559 3. current/next/prev (0 "") false。 each !
560
561 list 。list() ,
562 0
563 /* */ list($a, $b) = array($b, $a);
564 :list($drink, , $power) = array('coffee', 'brown', 'caffeine');
565
566 1. , 。
567 : , , 。
568 【 】
569 , 。 ( ) 。
570 current() , 。
571 foreach , , 。
572 ,foreach , 。
573 , 。
574 2. , reset() 。
575
576
577 /* 【 】 */
578 * ,
579
580 foreach
581 foreach (array_expression as [$key =>] & $value)
582 foreach , 。
583 , ,
584 1. foreach ,break continue foreach
585 2. foreach 。
586 3. $value ,
587 4. $value , $value &
588 5. $key
589 6. foreach ,
590 , , 。
591
592
593 while...list...each
594 while (list($key, $val) = mysql_fetch_row($result)) = each($arr) {
595 echo "$key => $val
";
596 }
597
598
599
600 /* 【 】 */
601 //
602 count
603 array_count_values
604 array_product
605 array_sum
606 range
607
608 //
609 array_chunk
610 array array_chunk(array $input, int $size[, bool $preserve_keys])
611 array_filter
612 array_slice
613 array array_slice($arr, $offset [,$len [,$preserve_keys]])
614 array_keys
615 array array_keys(array $input[, mixed $search_value[, bool $strict]] )
616 search_value, 。 input 。
617 array_values ,
618
619 array_merge
620 。
621 , 。
622 , , 。
623 , 。
624 array_merge_recursive
625
626 //
627 in_array
628 bool in_array(mixed $needle, array $haystack[, bool $strict])
629 array_key_exists
630 isset() NULL TRUE, array_key_exists()
631 array_search ,
632
633 array_combine , ,
634 FALSE。
635 array_rand , ,
636 array_fill
637 array_fill($start, $num, $value)
638 array_flip
639 array_pad
640 array_reverse
641 array_unique
642 array_splice
643
644 implode
645 explode($delimiter, $str [,$limit]) //
646 $delimiter ""
647
648 array_map , ,
649 callback null,
650 array_walk , , , foreach
651 bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )
652
653 // :
654
655 array_push ( )
656 array_pop ( ) (reset())array 。
657
658 // :
659
660 array_unshift
661 array_shift (reset())array 。
662
663 //
664 sort
665 rsort
666 asort
667 arsort
668 ksort
669 krsort
670 usort
671 uksort
672 uasort
673 natsort “ ”
674 natcasesort “ ”
675 array_multisort
676 shuffle
677 , bool 。
678 ,
679
680 //
681 array_udiff_assoc ,
682 array_udiff_uassoc ,
683 array_udiff
684 array_diff_assoc
685 array_diff_key
686 array_diff_uassoc
687 array_diff_ukey
688 array_diff
689 //
690 array_intersect_assoc
691 array_intersect_key
692 array_intersect_uassoc ,
693 array_intersect_ukey
694 array_intersect
695 array_key_exists
696 array_uintersect_assoc ,
697 array_uintersect ,
698
699 extract($arr [,$type [,$prefix]]) ( $arr , )
700 compact($var [,...]) , ( )
701
702
703
704
705 /* 【 】 */
706 mixed ( ) 。
707 number integer float。
708 callback
709 void void 。
710 void 。
711
712
713 /* 【 】 */
714 #
715 mysql_connect
716 # SQL ,
717 mysql_query SQL
718 select, show, explain, describe , true。 false。
719 #
720 mysql_fetch_assoc
721 , each
722
723 mysql_fetch_row
724 mysql_fetch_array , ,
725 array mysql_fetch_array ( resource $result [, int $ result_type ] )
726 result_type :MYSQL_ASSOC,MYSQL_NUM MYSQL_BOTH( )
727 mysql_free_result
728 #
729 mysql_close
730
731
732 /* 【 】 */
733 # :
734 : 、 、
735 : 、
736 # , !!!
737
738 # 、 、
739 # $this ,self ,parent
740 # ( )
741 # PHP , PHP
742
743 //
744 -
745 void __construct([ mixed $args [, $... ]] )
746 - new , 。
747 - 。
748 - 5.3.3 , 。
749 - ,__construct
750
751 //
752 - 。
753 void __destruct( void )
754 # :
755 #
756 - ,
757 -
758 - ( , null)
759 - exit()
760
761 // (static )
762 - static, 。
763 - ( ) , $this -> 。
764 - , 。
765 - , 。
766 #
767 - -> 。
768 - , 。 , , 。
769 #
770 - , $this 。
771 - :: E_STRICT 。
772
773 // (::)
774 - 、 , 。
775 - 、 , 。
776 - self parent 。
777
778 //
779 - , $this , , -> , $。
780 -> -> () $this-> $this-> ()
781 - , self parent , , :: , $。
782 ::$ :: () self::$ self:: ()
783 - : 。( )
784 ::$ $this::$ ::$ () $this:: ()
785 # ->, ::
786
787 - , 。
788 - , 。
789 - ,$this !
790 - $this。
791 - , $this。
792 - , 。
793
794 //
795 - 。
796 - $ 。
797 - , , ( ) 。
798 # :const = ;
799 - public
800 - , , :: self::
801
802 //
803 - __autoload
804 - ( , )
805 - __autoload
806 - __autoload , require
807 - __autoload
808 function __autoload($class_name) {
809 require_once $_SERVER["DOCUMENT_ROOT"] . "/class/$class_name.php";
810 }
811 // $_SERVER["DOCUMENT_ROOT"]
812 - , !
813 - , , spl_autoload_register 。
814 # spl_autoload_register
815 - __autoload()
816 bool spl_autoload_register ([ callback $autoload_function ] )
817 - ,
818 - ,__autoload 。
819 - , ( ); ,
820 # , :
821 spl_autoload_register(array(__CLASS__, '__autoload'));
822 __CLASS__ , $this,
823
824 // ( )
825 #
826 # ,
827 # , ,
828 :1. ;2.
829 #
830 serialize
831 string serialize ( mixed $value )
832 - , value , 。
833 - PHP , 。
834 #
835 unserialize PHP
836 mixed unserialize ( string $str [, string $callback ] )
837 - , PHP 。
838
839
840 #
841 - file_put_contents
842 int file_put_contents($file, $data [,$flags])
843 $flags:FILE_USE_INCLUDE_PATH( ),FILE_APPEND( )
844 - file_get_contents
845 string file_get_contents($file [, bool $use_include_path [,int $offset [,int $maxlen]]])
846
847 #
848 - , 。
849 # , 。
850
851 __sleep 。
852 - , , 。
853 -
854 __wakeup ,
855 - ,
856 public function __sleep() {
857 return array('server', 'username', 'password', 'db');
858 }
859 public function __wakeup() {
860 $this->connect();
861 }
862
863 //
864 class extends {}
865 , 。
866 : , 。 。
867
868 instanceof
869 instanceof
870
871 //
872 public ( 、 、 )
873 protected ( 、 )
874 private ( )
875 、 。
876 #
877 - ,var public
878 - , , public
879
880 // override
881 $this , , 。
882 - , , 。
883 - 。
884 - , 。
885 - 。
886
887 , 。 , 。
888
889 , 。 parent::__construct()
890
891 #
892 :
893 。
894 :
895 , 。
896
897 # $this
898 $this , 。
899 -
900 - 。 , $this ( ), 。
901 $this , 。
902
903 # final
904 final, ( ) 。
905 final, 。
906 final !
907 #
908 :abstract
909 , , 。
910 。 。
911 , 。 。
912 , 。
913 , 。
914 , ( )。
915 , protected, protected public, private。
916 - 。
917 - :
918 1. , , 。
919 2. ( )。 。
920
921 //
922 :interface
923 - 。
924 - , 。
925 - interface , , 。
926 - public, public 。
927 - (const)。 。
928 :: 。 :: , :: 。
929 , , 。
930 - !
931 #
932 interface {
933 ( )
934 }
935 #
936 - , implements 。
937 - , fatal 。
938 - , 。
939 - , 。
940 - , extends 。
941 class implements {
942
943 }
944 #
945 1. , 。
946 2. , 。
947 3. , 。
948 4. 。 extends 。
949 interface I_C extends I_A, I_B {}
950
951 //
952 self::, ( )
953 , 。
954 , ,self 。
955 static::, ( )
956 。
957 , 。
958 static:: , 。
959
960 // ( )
961 - , 。
962 - foreach , 。
963 foreach ($obj as $p_name => $p_value) {}
964 # ( Iterator)
965 Iterator -
966 Iterator::current —
967 Iterator::key —
968 Iterator::next —
969 Iterator::rewind —
970 Iterator::valid —
971
972 #
973 // [ ] 。
974 : = clone
975 - 。
976 __clone() 。
977 : (new), (clone)。
978
979 //
980 #
981 (Singleton) 。 。 , 。
982 #
983 class MySQLDB {
984 private static $instance = null; //
985 // private,
986 private function __construct() {}
987 public static function getInstance() {
988 if(! self::$instance instanceof static) {
989 self::$instance = new static;
990 }
991 return self::$instance;
992 }
993 private function __clone() {} //
994 }
995
996 //
997 __construct
998 __destruct
999 __clone
1000 __sleep
1001 __wakeup
1002 __autoload ,
1003
1004 __toString
1005 __invoke
1006
1007 # overload
1008 " "
1009 , 。
1010 public。
1011 , 。
1012 。
1013 #
1014 -
1015 。
1016 #
1017 , 。 static。
1018 __set
1019 public void __set(string $name, mixed $value)
1020 : ,
1021 __get
1022 public mixed __get(string $name)
1023 __isset isset() empty()
1024 public bool __isset(string $name)
1025 __unset unset()
1026 public void __unset(string $name)
1027 #
1028 -
1029 __call ( , )
1030 public mixed __call(string $name, array $arguments)
1031 __callStatic ( , )
1032 public static mixed __callStatic(string $name, array $arguments)
1033 # $name 。$arguments , 。
1034
1035 //
1036
1037 , array
1038 NULL
1039 , 。
1040
1041 //
1042 : , 。
1043 : 。 。
1044 : 。
1045
1046 // ·
1047 this
1048 public ( 、 、 )
1049 protected ( 、 )
1050 private ( )
1051 parent::
1052 self:: ( )
1053 static:: ( )
1054 static ( 、 ), , ,
1055 final final , final ( 、 )
1056 const ( )
1057 abstract
1058 interface
1059 extends ( 、 )
1060 implements ( 、 )( )
1061 Iterator ( )
1062 clone
1063 instance
1064 instanceof
1065
1066 /* 【 】 */
1067 class_alias([$original [,$alias]])
1068 class_exists($class [,$autoload])
1069 interface_exists($interface [,$autoload])
1070 method_exists($obj, $method)
1071 property_exists($class, $property)
1072 get_declared_classes(void)
1073 get_declared_interfaces(void)
1074 get_class([$obj])
1075 get_parent_class([$obj])
1076 get_class_methods($class)
1077 get_object_vars($obj)
1078 get_class_vars($class)
1079 is_a($obj, $class) TRUE
1080 is_subclass_of($obj, $class) , TRUE
1081 get_object_vars($obj)
1082
1083
1084 //
1085 # PHP ->
1086 Closure , final
1087 stdClass ,
1088 __PHP_Incomplete_Class , ,
1089 Exception
1090 PDO
1091
1092 //
1093 __DIR__
1094 __LINE__
1095 __FILE__ ( )
1096
1097 __CLASS__
1098 __METHOD__ ,
1099 __FUNCTION__ ,
1100
1101 // Reflection
1102 :1. 2.
1103 ReflectionClass
1104 ReflectionMethod
1105 ReflectionClass::export
1106 #
1107 ReflectionFunction
1108 $f = new ReflectionFunction('func'); // func func($p)
1109 $f->invoke('param');
1110
1111
1112 /* */
1113 // PHP
1114 header('Loacation: url')
1115 header() , , die
1116 ,
1117 // JS
1118 location.href = url
1119 // HTML
1120 " Refresh" content=" ; url= URI">
1121
1122 /* 【Cookie】 */
1123 cookie 。
1124 cookie HTTP , setcookie() , header() 。 , cookie HTTP 。
1125
1126 //
1127 setcookie cookie
1128 setcookie($name [,$value [,$expire [,$path [,$domain [,$secure [,$httponly]]]]]])
1129 # :setcookie() ! ob !
1130 #
1131 $name - cookie
1132 $_COOKIE['name'] name cookie
1133 $value - cookie , , ,
1134 $name 'name', $_COOKIE['name'] $value
1135 $expire - cookie (Unix , )
1136 $expire time()+60*60*24*7 cookie 。 , 。
1137 $path - cookie 。 , cookie。
1138 '/', cookie domain 。
1139 '/foo/', cookie domain /foo/ 。
1140 cookie 。
1141 $domain - cookie , cookie 。
1142 cookie abc.com , '.abc.com'。
1143 $secure - cookie HTTPS cookie , 。
1144 true ,cookie 。 false。
1145
1146 //
1147 - cookie 。
1148 - cookie $_COOKIE 。
1149 - cookie , cookie [] 。 。
1150 // $_COOKIE['user']['name'], user[name] name
1151 setcookie('user[name]', 'shocker');
1152 - $_COOKIE
1153
1154 //
1155 1:
1156 setcookie('user[name]', '');
1157 2: cookie “ ” 。
1158 // cookie , , 。
1159 setcookie('usr[name]', '', time()-1);
1160
1161 # :
1162 1. cookie
1163 2. $_COOKIE cookie , cookie 。
1164 $_COOKIE cookie 。
1165 $_COOKIE cookie 。
1166 3. cookie :
1167 cookie:
1168 cookie:$expire , 。
1169 4.
1170 cookie 。 。
1171 cookie 。
1172 5. cookie
1173 。
1174 6. js document.cookie ,
1175 7. COOKIE , COOKIE COOKIE , 。
1176
1177 /* 【session】 */
1178 1. session
1179 session_start()
1180 :session_start() ! ob 。
1181 2.
1182 $_SESSION
1183 3. SessionID, 。 cookie path '/'
1184 4. session
1185 : session , :sess_ SessionID
1186 5. session 。
1187 。
1188 6. $_SESSION !
1189 。
1190 。
1191 7.
1192
1193 cookie SessionID
1194 session ( session )
1195 cookie PHPSESSID 。( )
1196 php.ini session.gc_maxlifetime
1197 8.
1198 $_SESSION 。 session $_SESSION 。
1199 $_SESSION session 。
1200 unset($_SESSION['key']) , session 。
1201 , $_SESSION 。
1202 session_destroy() session , 。
1203 $_SESSION ,unset 。
1204 session? 3
1205 unset($_SESSION);
1206 $_SESSION , 。 unset, $_SESSION = array()
1207 session_destroy();
1208 setcookie('PHPSESSID', '', time()-1); //
1209 , 、 。
1210
1211 // session
1212 # session
1213 session.save_handler = user|files|memcache
1214 # ,
1215 PHP session.save_path , 。
1216 。 , ID 。 。
1217 session.save_path = "2; F:/PHPJob/Temp"
1218 #
1219 # :
1220 $open、 $close、 $read、 $write、 $destroy( session_destroy )、 $gc
1221 # ID 。 ID。
1222 session.hash_function ID 。
1223 '0' MD5(128 ),'1' SHA-1(160 )。
1224 session.hash_bits_per_character 。
1225 '4'(0-9,a-f),'5'(0-9,a-v), '6'(0-9,a-z,A-Z,"-",",")。
1226 hash 128bit, ID 128/ ,4->32, 5->26, 6->22
1227 #
1228 # : PHP 、 、 ,
1229 session_set_save_handler
1230 bool session_set_save_handler(callable $open, callable $close, callable $read, callable $write, callable $destroy, callable $gc)
1231 :open, close, read, write, destroy, gc
1232 # ,
1233
1234 #
1235 session_start
1236 session_id ID
1237 session_destroy ( )
1238 session_name (cookie , PHPSESSID)
1239 session_save_path
1240 session_set_save_handler
1241 session_unset ( $_SESSION )
1242 session_encode
1243 session_decode
1244 session_write_close
1245 session_register_shutdown
1246 session_set_cookie_params cookie , session_start() 。
1247 session_set_cookie_params(0,"/webapp/"); // session
1248 session_get_cookie_params cookie 。 cookie
1249
1250 # php.ini
1251 ini_set($varname, $newvalue);
1252 //
1253 // php.ini
1254 ini_get($varname) //
1255 ini_get_all([str $extension]) //
1256
1257 # session
1258 session.name cookie 。 , PHPSESSID。
1259 session.save_path 。
1260 files , 。 /tmp。
1261 N 。
1262 N , 。 ext/session shell mod_files.sh 。
1263 N N 0, 。
1264 session.save_handler 。 files。
1265 , user。
1266 ini_set('session.save_handler', 'user');// 。
1267 session.auto_start 。 0( )。
1268 session.gc_probability session.gc_divisor gc(garbage collection ) 。 gc_probability/gc_divisor 。 1/100 1% gc 。session.gc_divisor 100。session.gc_probability 1。
1269
1270
1271 /* 【 】 */GD
1272 //
1273 #
1274 imagecreate
1275 resource imagecreate(int $x_size, int $y_size)
1276 imagecreatetruecolor
1277 # URL
1278 imagecreatefromgd2 GD2 URL
1279 imagecreatefromgd2part GD2 URL
1280 imagecreatefromgd GD URL
1281 imagecreatefromgif URL
1282 imagecreatefromjpeg URL
1283 imagecreatefrompng URL
1284 imagecreatefromstring
1285 imagecreatefromwbmp URL
1286 imagecreatefromxbm URL
1287 imagecreatefromxpm URL
1288 //
1289 imagecolorallocate
1290 int imagecolorallocate(resource $image, int $red, int $green, int $blue)
1291 imagecolorallocatealpha + alpha
1292 imagecolordeallocate
1293 imagecolortransparent
1294 imagecolorat
1295 imagecolorclosest
1296 imagecolorclosestalpha
1297 imagecolorclosesthwb
1298 imagecolorexact
1299 imagecolorexactalpha
1300 imagecolormatch
1301 imagecolorresolve
1302 imagecolorresolvealpha + alpha
1303 imagecolorset
1304 imagecolorsforindex
1305 imagecolorstotal
1306 //
1307 imagefill
1308 bool imagefill(resource $image, int $x, int $y, int $color)
1309 imagefilledarc
1310 imagefilledellipse
1311 imagefilledpolygon
1312 imagefilledrectangle
1313 imagefilltoborder
1314 imagesettile
1315 //
1316 imagearc
1317 imagechar
1318 imagecharup
1319 imagedashedline
1320 imageellipse
1321 imageline
1322 imagepolygon
1323 imagerectangle
1324 imagesetpixel
1325 imagesx
1326 imagesy
1327 //
1328 imagesetbrush
1329 imagesetstyle
1330 imagesetthickness
1331 //
1332 imagecopy
1333 imagecopymerge
1334 imagecopymergegray
1335 imagecopyresampled
1336 imagecopyresized
1337 //
1338 imagestring
1339 imagestringup
1340 imagepsslantfont
1341 imagefontheight
1342 imagefontwidth
1343 imagettfbbox TrueType
1344 imageloadfont
1345 imagepsencodefont
1346 imagepsextendfont
1347 //
1348 imagegif GIF
1349 imagepng PNG
1350 imagejpeg JPEG
1351 imagewbmp WBMP
1352 header() "Content-type: image/ " PHP 。
1353 header("Content-type: image/gif"); imagegif($im);
1354 imagegd GD
1355 imagegd2 GD2
1356 //
1357 imagedestroy
1358 //
1359 image_type_to_extension
1360 getimagesize
1361 imagesx
1362 imagesy
1363 imageistruecolor
1364 imagetypes PHP
1365 //
1366 imagerotate
1367 imagealphablending
1368 imageantialias (antialias)
1369 imagefilter
1370 imagegammacorrect GD gamma
1371 imageinterlace
1372
1373 /* 【 】【 】 */
1374 imagecopyresampled
1375 bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
1376 imagecopymerge
1377 bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
1378 getimagesize
1379 array getimagesize ( string $filename [, array &$imageinfo ] )
1380
1381 /* 【URL 】 */
1382 get_headers — HTTP
1383 get_meta_tags — meta content ,
1384 http_build_query — URL-encode
1385 urldecode — URL
1386 urlencode — URL
1387 parse_url — URL,
1388 'http://username:password@hostname/path?arg=value#anchor'
1389 scheme( http), host, port, user, pass, path, query( ? ), fragment( # )
1390
1391
1392 //
1393 $a = ' ';
1394 $b = ' ';
1395 $a = urlencode($a);
1396 $b = urlencode($b);
1397 $a = $a.'&'.$b;
1398 $b = explode('&', $a);
1399 $a = urldecode($b[1]);
1400 $b = urldecode($b[0]);
1401 echo $a, $b;
1402 //list()
1403 list($a, $b) = array($b, $a);
1404
1405
1406 /* 【 、 】 */
1407 dirname($path)
1408 basename($path [,$suffix])
1409 pathinfo($path [,$options]) ( :dirname,basename,extension)
1410 realpath($path)
1411
1412 copy($source, $dest)
1413 unlink($file)
1414 rename($old, $new)
1415 mkdir($path [,$mode [,$recursive]])
1416 $mode , 0777
1417 $recursive , false
1418 rmdir($dir) ( , )
1419
1420 file_exists($file)
1421 is_file($file)
1422 is_dir($file)
1423 is_readable($file)
1424 is_writable($file)
1425 is_executable($file)
1426 is_link($file)
1427
1428 tmpfile(void)
1429 tempnam($dir, $prefix)
1430
1431 file($file)
1432 fopen($filename, $mode [,$use_include_path])
1433 $mode :( 'b' )
1434 'r' , 。
1435 'r+' , 。
1436 'w' , 。 。
1437 'w+' , 。 。
1438 'a' , 。 。
1439 'a+' , 。 。
1440 'x' , 。
1441 'x+' , 。
1442 fclose($handle)
1443 fread($handle, $length) ( )
1444 fwrite($handle, $string [,$length]) ( )
1445 rewind($handle)
1446 ftell($handle) /
1447 fseek($handle, $offset [,$whence])
1448 feof($handle)
1449 fgets
1450 fgetss HTML
1451 flock($handle, $opt)
1452 $opt:LOCK_SH ( );LOCK_EX ( );LOCK_UN ( )
1453
1454
1455 readfile($file)
1456 fflush($handle)
1457
1458 touch($file [,$time [,$atime]])
1459 fileatime
1460 filectime inode
1461 filegroup
1462 fileinode inode
1463 filemtime
1464 fileowner
1465 fileperms
1466 filesize
1467 filetype
1468
1469
1470 /* fileinfo */ /
1471 # Fileinfo, php.ini
1472 #extension=php_fileinfo.dll
1473 finfo_open([$opt]) //
1474 finfo_file($finfo, $file [,$opt]) //
1475 finfo_set_flags($finfo, $opt) //
1476 finfo_close($finfo) //
1477
1478 mime_content_type($file) // MIME
1479
1480 $opt :
1481 FILEINFO_MIME_ENCODING
1482 FILEINFO_MIME_TYPE MIME
1483
1484
1485 //
1486 chdir($dir)
1487 chroot($dir)
1488 closedir($handle)
1489 dir($dir)
1490 getcwd()
1491 opendir($path)
1492 readdir($handle)
1493 rewinddir($handle)
1494 scandir($dir [,$order])
1495 glob($pattern [,$flags])
1496 $flags:
1497 GLOB_MARK -
1498 GLOB_NOSORT - ( )
1499 GLOB_NOCHECK -
1500 GLOB_NOESCAPE -
1501 GLOB_BRACE - {a,b,c} 'a','b' 'c'
1502 GLOB_ONLYDIR -
1503 :glob('*.{php,txt}', GLOB_BRACE);
1504
1505
1506 /* */
1507 // ZipArchive
1508 $zip = new ZipArchive;
1509 // ZIP
1510 $zip->open($file [,$flags]);
1511 $flags:
1512 ZIPARCHIVE::OVERWRITE ( )
1513 ZIPARCHIVE::CREATE ( )
1514 ZIPARCHIVE::EXCL
1515 ZIPARCHIVE::CHECKCONS
1516 // ZIP
1517 // ZIP
1518 $zip->extractTo($dest, [$entries]);
1519 $dest: ,$entries:
1520 // ZIP
1521 $zip->addFile($file, [$newname]);
1522 $newname "dir/file", 。 。
1523 // ZIP ,
1524 $zip->addFromString($file, $str);
1525 // ZIP
1526 $zip->addEmptyDir($dir);
1527 // ZIP
1528 $zip->deleteIndex($index);
1529 // ZIP
1530 $zip->deleteName($name);
1531 // ZIP
1532 $zip->setArchiveComment($str);
1533 // ZIP
1534 $zip->getArchiveComment();
1535 //
1536 $zip->getFromIndex($index);
1537 //
1538 $zip->getFromName($name);
1539 //
1540 $zip->getNameIndex($index);
1541 //
1542 $zip->renameIndex($index, $newname);
1543 //
1544 $zip->renameName($name, $newname);
1545
1546 // ZIP ,
1547 function addFileToZip($path, $zip) {
1548 // $path
1549 $handle = opendir($path);
1550 //
1551 // false ( "0"), !==
1552 while ($file = readdir($handle) !== false) {
1553 //
1554 if ($file != '.' && $file != '..') {
1555 //
1556 if (is_dir($path . '/' . $file)) {
1557 addFileToZip($path.'/'.$file, $zip);
1558 } else {
1559 // ZIP
1560 $zip->addFile($path . '/' . $file);
1561 }
1562 }
1563 }
1564 // $path
1565 closedir($path);
1566 }
1567 // ----- END ----- //
1568
1569
1570 /* 【 】 */
1571 enctype="multipart/form-data" //FORM
1572 $_FILES
1573 error
1574
1575 php.ini
1576 1) upload_max_filesize
1577 2) post_max_size POST
1578 3) memory_limit ( 128MB)
1579
1580 MAX_FILE_SIZE , 。( 2M)
1581 "hidden" name="MAX_FILE_SIZE" value="102400">
1582
1583
1584 6,7
1585
1586
1587 name
1588 type
1589 tmp_name
1590 size
1591 move_uploaded_file($path, $newpath); //
1592 is_uploaded_file($file) // POST
1593 //
1594 "file" name="updfile[]" /> //HTML
1595 $_FILES['updfile']['tmp_name'][0] // ,
1596
1597
1598 //php.ini
1599 file_uploads = On HTTP
1600 upload_max_filesize , 2M
1601 post_max_size post , 8M
1602 upload_tmp_dir ,
1603 ,
1604 GET 2K
1605
1606
1607 /* 【 】 */
1608 FORM name , $_POST , 。
1609 file, checkbox 。
1610 "checkbox" name="id[]" value=" 1" />
1611 "checkbox" name="id[]" value=" 2" />
1612 $id = $_POST['id']; // ,
1613 name :
1614 "checkbox" name="id[one]" value=" 1" />
1615 "checkbox" name="id[two]" value=" 2" />
1616 $id = $_POST['id']; // name id[...] ,
1617
1618
1619 /* iconv */
1620 //php.ini iconv
1621 [iconv]
1622 ;iconv.input_encoding = ISO-8859-1
1623 ;iconv.output_encoding = ISO-8859-1
1624 ;iconv.internal_encoding = ISO-8859-1
1625 iconv_set_encoding($type, $charset);
1626 $type:input_encoding,output_encoding,internal_encoding
1627 iconv_get_encoding([$type = "all"])
1628 $type:all,input_encoding,output_encoding,internal_encoding
1629
1630
1631
1632 iconv($in_charset, $out_charset, $str) //
1633
1634 , 、 、 !
1635 iconv_strlen($str [,$charset]) //
1636 iconv_strpos($str, $needle, $offset [,$charset]) //
1637 iconv_strrpos($str, $needle [,$charset]) //
1638 iconv_substr($str, $offset [,$len [,$charset]]) //
1639
1640
1641 /* 【 】*/
1642 addslashes($str) //
1643 stripcslashes($str) // addcslashes
1644 stripslashes($str) //
1645 chr($ascii) // ASCII
1646 ord($char) // ASCII
1647 substr_count($haystack, $needle) //
1648 count_chars($str [,$mode])
1649 //0 - , 。
1650 //1 - 0 , 。
1651 //2 - 0 , 。
1652 //3 - 。
1653 //4 - 。
1654 crypt($str, [$salt]) //
1655 str_split($str [,$len]) //
1656 explode($separ, $str) //
1657 implode([$glue,] $arr) // $glue
1658 chunk_split($str [,$len [,$end]]) //
1659 $len: ,$end: ( "\r
")
1660 html_entity_decode($str [,$flags [,$encoding]]) // HTML
1661 htmlentities($str [,$flags [,$encoding]]) // HTML
1662 htmlspecialchars_decode($str) // HTML
1663 htmlspecialchars($str [,$flags [,$encoding]]) // HTML
1664 lcfirst($str) //
1665 ucfirst($str) //
1666 ucwords($str) //
1667 strtolower($str) //
1668 strtoupper($str) //
1669 trim($str [,$charlist]) // ( )
1670 ltrim($str [,$charlist]) // ( )
1671 rtrim($str [,$charlist]) // ( )
1672 md5_file($file) // MD5
1673 md5($str) // MD5
1674 money_format($format, $num) //
1675 number_format($num) //
1676 nl2br($str) // HTML
1677 parse_str($str, [$arr]) //
1678 print($str) //
1679 printf //
1680 sprintf($format [,$args...]) //
1681 sha1_file // sha1
1682 sha1 // sha1
1683 similar_text($first, $second [,$percent]) //
1684 ,$percent
1685 str_replace($search, $replace, $str [,$count [,$type]]) //
1686 str_ireplace // ( )
1687 str_pad($str, $len [,$pad [,$type]]) //
1688 $type: 。STR_PAD_RIGHT,STR_PAD_LEFT STR_PAD_BOTH
1689 str_repeat($str, $num) //
1690 str_shuffle($str) //
1691 str_word_count($str [,$format [,$charlist]]) //
1692 strcasecmp($str1, $str2) // ( )
1693 str1 str2, ; str1 str2, ; 0。
1694 strcmp($str1, $str2) //
1695 strcoll($str1, $str1) // ( , )
1696 strcspn($str1, $str1 [,$start [,$len]]) //
1697 strip_tags($str) // HTML PHP
1698 strpos($haystack, $needle [,$offset]) //
1699 stripos($haystack, $needle [,$offset]) // ( )
1700 strripos($haystack, $needle [,$offset]) // ( )
1701 strrpos($haystack, $needle [,$offset]) //
1702 strlen($str) //
1703 strpbrk($haystack, $str) //
1704 strrev($str) //
1705 join('', array_reverse(preg_split("//u", $str))); // UTF-8
1706 strspn$subject, $mask) // 。
1707 strstr($haystack, $needle) //
1708 stristr($haystack, $needle) // ( )
1709 strrchr($haystack, $needle) //
1710 strtok($str, $token) //
1711 substr_compare($main_str, $str, $offset [,$len) // ( )
1712 substr_replace$str, $replace, $start [,$len] //
1713 strtr($str, $from, $to) //
1714 substr($str, $start [,$len]) //
1715 vfprintf$handle, $format, $args) //
1716 vprintf($format, $args) //
1717 vsprintf($format, $args) //
1718 wordwrap($str [,$width=75 [,$break='
']]) //
1719
1720 crc32($str) // crc32
1721 crc32 [ ]
1722 str 32 。 。
1723
1724 /* mbstring( ) */
1725 // mbstring
1726 mb_strimwidth($str, $start, $width [,$trim [,$encoding]]) // ( )
1727 mb_stripos($str, $needle [,$offset [,$encoding]]) // ( )
1728 mb_strpos($str, $needle [,$offset [,$encoding]]) //
1729 mb_strripos($str, $needle [,$offset [,$encoding]]) // ( )
1730 mb_strrpos($str, $needle [,$offset [,$encoding]]) //
1731 mb_strstr($str, $needle [,$before [,$encoding]]) // ( )
1732 mb_stristr($str, $needle [,$before [,$encoding]]) // ( ) ( )
1733 mb_strrchr($str, $needle [,$before [,$encoding]]) // ( )
1734 mb_strrichr($str, $needle [,$before [,$encoding]]) // ( ) ( )
1735
1736 mb_strtoupper($str [,$encoding]) //
1737 mb_strtolower($str [,$encoding]) //
1738
1739 mb_strlen($str [,$encoding]) //
1740 mb_split($pattern, $str [,$limit]) //
1741 mb_substr($str, $start [,$len [,$encoding]]) //
1742 mb_strcut($str, $start [,$len [,$encoding]]) //
1743 mb_strwidth($str [,$encoding]) //
1744 mb_substr_count($str, $needle [,$encoding]) //
1745
1746
1747 /* PCRE */
1748 preg_filter($pattern, $replace, $subject [,$limit [,&$count]])
1749 preg_replace($pattern, $replace, $subject [,$limit [,&$count]])
1750 preg_replace_callback($pattern, $callback, $subject [,$limit [,&$count]])
1751 preg_grep($pattern, $input [,$flags])
1752 preg_match($pattern, $subject [,&$matches [,$flags [,$offset]]])
1753 preg_match_all($pattern, $subject [,&$matches [,$flags [,$offset]]])
1754 $matches
1755 $matches[0][n] (n>=0) n+1
1756 $matches[m][n] (m>=1, n>=0) n+1 m
1757 preg_split($pattern, $subject [,$limit [,$flags]])
1758 $limit limit ,-1
1759 $flags :
1760 PREG_SPLIT_NO_EMPTY:
1761 PREG_SPLIT_DELIM_CAPTURE:
1762 PREG_SPLIT_OFFSET_CAPTURE:
1763 preg_quote($str [,$delimiter])
1764 preg_last_error() PCRE
1765
1766
1767 /* Math */
1768 base_convert($number, $frombase, $tobase) //
1769 ceil($float) //
1770 floor($float) //
1771 exp($float) // e
1772 hypot($x, $y) //
1773 is_nan($val) //
1774 log($arg [,$base=e]) //
1775 max($num1, $num2, ...) //
1776 max($arr) //
1777 min($num1, $num2, ...) //
1778 rand([$min], $max) //
1779 srand([$seed]) //
1780 mt_rand([$min], $max) //
1781 mt_srand($seed) //
1782 pi() //
1783 pow($base, $exp) //
1784 sqrt($float) //
1785 deg2rad($float) //
1786 rad2deg($float) //
1787 round($val [,$pre=0]) //
1788 fmod($x, $y) //
1789
1790
1791
1792 /* 【MySQL 】 */
1793 mysql_client_encoding([$link]) //
1794 mysql_set_charset($charset [,$link]) //
1795 mysql_connect($host, $user, $pass) // MySQL
1796 mysql_create_db($db [,$link]) // MySQL
1797 mysql_pconnect($host, $user, $pass) // MySQL
1798 mysql_ping([$link]) //Ping ,
1799 mysql_close([$link]) // MySQL
1800
1801 mysql_data_seek($result, $row) //
1802 mysql_errno([$link]) // MySQL
1803 mysql_error([$link]) // MySQL
1804 mysql_affected_rows([$link]) // MySQL
1805 mysql_info([$link]) //
1806 mysql_insert_id([$link]) // INSERT ID
1807
1808 mysql_query($sql [,$link]) // MySQL
1809 mysql_unbuffered_query($sql [,$link]) // MySQL SQL ,
1810 mysql_db_query($db, $sql [,$link]) // MySQL
1811
1812 mysql_escape_string($str) // mysql_query
1813 mysql_real_escape_string($str) // SQL ,
1814
1815 mysql_fetch_array($result [,$type]) // , ,
1816 mysql_fetch_assoc($result) //
1817 mysql_fetch_object($result) //
1818 mysql_fetch_row($result) //
1819 mysql_fetch_field($result) //
1820 mysql_num_fields($result) //
1821 mysql_num_rows($result) //
1822
1823 mysql_fetch_lengths($result) //
1824 mysql_field_flags($result, $field_offset) //
1825 mysql_field_len($result, $field_offset) //
1826 mysql_field_name($result, $field_offset) //
1827 mysql_field_seek($result, $field_offset) //
1828 mysql_field_table($result, $field_offset) //
1829 mysql_field_type($result, $field_offset) //
1830 mysql_free_result($result) //
1831
1832 mysql_list_dbs([$link]) // MySQL
1833 mysql_list_fields($db, $table [,$link]) // MySQL
1834 mysql_list_processes([$link]) // MySQL
1835 mysql_list_tables($db [,$link]) // MySQL
1836
1837 mysql_result($result, $row [$field]) //
1838 mysql_select_db($db [,$link]) // MySQL
1839 mysql_tablename($result, $i) //
1840 mysql_db_name($result, $row [,$field]) // mysql_list_dbs()
1841
1842 mysql_stat([$link]) //
1843 mysql_thread_id([$link]) // ID
1844 mysql_get_client_info() // MySQL
1845 mysql_get_host_info() // MySQL
1846 mysql_get_proto_info() // MySQL
1847 mysql_get_server_info() // MySQL
1848
1849
1850 /* 【SQL 】 */
1851 :
1852 1. :mysql_real_escape_string()
1853 (GPC: GET, POST, COOKIE)
1854 2. ,
1855
1856 //
1857 。
1858 , , , NULL 。 addslashes() 。
1859 php.ini :
1860 magic_quotes_gpc = Off
1861 get_magic_quotes_gpc()
1862
1863 /* 【 】 */
1864 、
1865 // :
1866 、 、 、
1867 trigger_error error/warning/notice
1868
1869 //php.ini ,ini_set()
1870 error_reporting
1871 # :
1872 display_errors = On
1873 # :
1874 log_errors = on
1875 error_log
1876 - !
1877
1878
1879 set_error_handler —
1880 - 4 , 、 、 、
1881 - , 。
1882 - false, 。
1883 - (E_USER_ERROR), 。 , 。
1884 restore_error_handler —
1885 error_get_last —
1886
1887 //
1888 debug_backtrace
1889 , :function, line, file, class, object, type, args
1890 debug_print_backtrace
1891
1892 //
1893 >
1894
1895 #
1896 , 。
1897 #
1898 , 。
1899
1900 //
1901 。
1902 。
1903 Exception 。
1904 #
1905
1906 throw new UserException();
1907 , 。
1908 #
1909 try { }
1910 #
1911 catch (UserException $obj) { }
1912 。
1913 #
1914 。
1915 catch , 。
1916 set_exception_handler —
1917 restore_exception_handler —
1918
1919
1920 #
1921 Exception 。
1922
1923 //
1924 protected string $message
1925 protected int $code
1926 protected string $file
1927 protected int $line
1928 //
1929 Exception::__construct —
1930 Exception::getMessage —
1931 Exception::getPrevious —
1932 Exception::getCode —
1933 Exception::getFile —
1934 Exception::getLine —
1935 Exception::getTrace —
1936 Exception::getTraceAsString —
1937 Exception::__toString —
1938 Exception::__clone —
1939
1940 /* 【 】 */
1941 PDO:PHP Data Objects
1942 PHO , 。
1943 PDO OOP , :
1944 PDO:PDO
1945 PDOStatement:PDO ,
1946 PDOException:PDO ,
1947
1948 //
1949 PDO::__construct(str $dsn [,str $username [,str $password [,arr $driver_options]]])
1950 DSN:Data Source Name,
1951 $dsn = 'mysql:dbname=testdb;host=127.0.0.1;port=3306';
1952 // SQL
1953 int PDO::exec(str $statement) //
1954 // SQL
1955 PDOStatement PDO::query (string $statement) // PDOStatement
1956 // (PDOStatement )
1957 array PDOStatement::fetchAll([int $fetch_style [,mixed $fetch_argument [,array $ctor_args = array()]]]) // +
1958 mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] ) //
1959 string PDOStatement::fetchColumn ([ int $column_number = 0 ] ) //
1960 //
1961 unset($pdo) $pdo = null
1962
1963 //
1964 :silent mode, , ( )
1965 array PDO::errorInfo(void)
1966 :warning mode, ,
1967 :exception mode, ,
1968 bool PDO::setAttribute(int $attribute, mixed $value) // PDO
1969 PDO::setAttribute('PDO::ATTR_ERRMODE', 'PDO::ERRMODE_SILENT | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION')
1970
1971 // SQL
1972 , SQL 。
1973 PDOStatement PDO::prepare(string $statement [,array $driver_options=array()])
1974 bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
1975 bool PDOStatement::execute ([ array $input_parameters ] )
1976
1977
1978 /* 【AR 】 */
1979 ->
1980 ->
1981 ->
1982
1983
1984 /* Date/Time */
1985 date($format [,$timestamp]) // / ,$timestamp time()
1986 Y:4
1987 m: ,
1988 d: , 2
1989 j: ,
1990 H: ,24 ,
1991 h: ,12 ,
1992 i:
1993 s: ,
1994 L: , 1, 0
1995 M: ,Jan Dec
1996 W: ,
1997 z:
1998 N:
1999 w: ,
2000 e:
2001 T:
2002 U: Unix ( )
2003 time() // Unix ( )
2004 microtime([$get_as_float]) // Unix
2005 $get_as_float TRUE,
2006 strtotime($time [,$now]) // Unix
2007 date("Y-m-d H:i:s", strtotime("-1 day")); //
2008 "now"
2009 "10 September 2000"
2010 "+1 week"
2011 "+1 week -2 days 4 hours 2 seconds"
2012 "last Monday"
2013 "next Thursday"
2014 gmdate($format [,$timestamp]) // GMT/UTC /
2015 mktime([$hour = date("H") [,$minute = date("i") [,$second = date("s") [,$month = date("n") [,$day = date("j") [,$year = date("Y") [,$is_dst = -1]]]]]]]) // Unix
2016 strftime($format [,$timestamp]) // /
2017 date_default_timezone_get($timezone) //
2018 date_default_timezone_set($timezone) //
2019
2020
2021 /* DateTime */
2022 //date() 1901 12 13 20:45:54 2038 1 19 03:14:07( 32 )
2023 DateTime::__construct([$time="now"]) //
2024 $time , @ , '@2345678'
2025 DateTime::setTimezone($timezone) //
2026 eg: $date->setTimezone(new DateTimeZone('PRC'));
2027 DateTime::format($format) // , date()
2028
2029
2030 /* $_SERVER */
2031 // URL:http://desktop/dir/demo.php?a=aaa&b=bbb
2032 PHP_SELF // /dir/demo.php
2033 GATEWAY_INTERFACE CGI // CGI/1.1
2034 SERVER_ADDR IP // 127.0.0.1
2035 SERVER_NAME // desktop
2036 SERVER_SOFTWARE // Apache/2.2.22 (Win32) PHP/5.3.13
2037 SERVER_PROTOCOL // HTTP/1.1
2038 REQUEST_METHOD // GET
2039 REQUEST_TIME // 1386032633
2040 QUERY_STRING ( ) // a=aaa&b=bbb
2041 DOCUMENT_ROOT // C:/Users/Administrator/Desktop
2042 HTTP_ACCEPT Accept: // text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2043 HTTP_ACCEPT_CHARSET Accept-Charset: // UTF-8,*
2044 HTTP_ACCEPT_ENCODING Accept-Encoding: // gzip, deflate
2045 HTTP_ACCEPT_LANGUAGE Accept-Language: // zh-cn,zh;q=0.5
2046 HTTP_CONNECTION Connection: // keep-alive
2047 HTTP_HOST Host: // desktop
2048 HTTP_REFERER
2049 HTTP_USER_AGENT User-Agent: // Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
2050 HTTPS HTTPS ,
2051 REMOTE_ADDR IP // 127.0.0.1
2052 REMOTE_HOST
2053 REMOTE_PORT Web // 49197
2054 REMOTE_USER
2055 REDIRECT_REMOTE_USER ,
2056 SCRIPT_FILENAME // C:/Users/Administrator/Desktop/dir/demo.php
2057 SERVER_ADMIN Apache SERVER_ADMIN //[email protected]
2058 SERVER_PORT Web // 80
2059 SERVER_SIGNATURE
2060 PATH_TRANSLATED ( )
2061 SCRIPT_NAME // /dir/demo.php
2062 REQUEST_URI URI // /dir/demo.php?a=aaa&b=bbb
2063 PHP_AUTH_DIGEST “Authorization” HTTP
2064 PHP_AUTH_PW
2065 AUTH_TYPE
2066 PATH_INFO 、 (query string)
2067 ORIG_PATH_INFO PHP ,“PATH_INFO”
2068
2069
2070
2071
2072 /* */
2073 1. ob ( )( )
2074 php.ini :output_buffering = 4096
2075 ob_start()
2076 , (header ), 。
2077 header() 。
2078 , , Apache http 。
2079 : !
2080 2. ( , , )
2081 3.
2082
2083 /* ob ( ) */ Output Buffering
2084 ob_start() // , , 。
2085 ob_start('ob_gzhandler'); // gz
2086
2087 ob_clean(); // , ( )。
2088 ob_end_clean(); // , ( )。
2089 ob_get_clean(); // , 。 ob_get_contents() ob_end_clean()
2090 ob_flush(); // , , 。
2091 ob_end_flush(); // , , 。
2092 ob_get_flush(); // , , 。 ob_end_flush() 。
2093 flush(); //
2094
2095 ob_get_contents(); // , 。
2096 ob_get_length(); // , , FALSE。
2097 ob_get_level(); //Return the nesting level of the output buffering mechanism.
2098 ob_get_status(); // ob
2099
2100 ob_implicit_flush(); // , , ob_implicit_flush(true), , (e.g: echo) , , flush() 。
2101
2102 ob_gzhandler //ob_start , gzip 。
2103 ob_list_handlers //List all output handlers in use
2104 output_add_rewrite_var //Add URL rewriter values
2105 output_reset_rewrite_vars //Reset URL rewriter values
2106
2107 php_ini :
2108 output_buffering // ON , ; , , 。
2109 output_handler // , 。 , output_handler mb_output_handler() , 。 , 。
2110 implicit_flush // ob_implicit_flush, Off。
2111
2112 //ob
2113 1) setcookie()、header() session_start() 。 , 。
2114 2) , phpinfo() HTML, $info=phpinfo(); , ob 。
2115 3) , gzip , , 。
2116 4) , , 。 HTML, 。
2117
2118
2119 /* */
2120 :apache/bin/ab.exe
2121 :cmd{%apache-bin%}>ab.exe -n -c URL
2122 MPM( ):perfork( ), worker( ), winnt(Win )
2123 MPM :httpd-mpm.conf
2124 MPM :httpd –l mpm_xxx.c xxx
2125 httpd.conf ( MPM):#Include conf/extra/httpd-mpm.conf
2126 #
2127 # :extra/httpd-mpm.conf
2128 #mpm_winnt.c
2129
2130 ThreadsPerChild 1000 # 1500-5500
2131 MaxRequestsPerChild 0
2132
2133 #mpm_prefork.c
2134
2135 StartServers 5 #
2136 MinSpareServers 5
2137 MaxSpareServers 10 #
2138 ServerLimit 1500 # apache
2139 MaxClients 1000 #
2140 MaxRequestsPerChild 0 # , worker
2141
2142 # pv
2143 ServerLimit 2500 # apache
2144 MaxClients 2000 #
2145
2146
2147 /* */
2148 1. URL 255
2149 2. meta ,keywords5
2150 3.
2151 4. alt
2152 5.
2153
2154 "</span><span style="color: #800000;">text/javascript</span><span style="color: #800000;">"</span> language=<span style="color: #800000;">"</span><span style="color: #800000;">javascript</span><span style="color: #800000;">"</span> src=<span style="color: #800000;">"</span><span style="color: #800000;">url</span><span style="color: #800000;">"</span>>
2155 url js/php/ , <span style="color: #000000;"> ! Ajax
</span><span style="color: #008080;">2156</span>
<span style="color: #008080;">2157</span>
<span style="color: #008080;">2158</span> <span style="color: #008000;">/*</span><span style="color: #008000;"> Apache </span><span style="color: #008000;">*/</span>
<span style="color: #008080;">2159</span> gzip/<span style="color: #000000;">deflate
</span><span style="color: #008080;">2160</span>
<span style="color: #008080;">2161</span>
<span style="color: #008080;">2162</span> <span style="color: #008000;">/*</span><span style="color: #008000;"> XSS </span><span style="color: #008000;">*/</span>
<span style="color: #008080;">2163</span> <span style="color: #000000;"># JS
</span><span style="color: #008080;">2164</span> <span style="color: #000000;"># HTML
</span><span style="color: #008080;">2165</span>
<span style="color: #008080;">2166</span> <span style="color: #000000;"> :htmlpurifier
</span><span style="color: #008080;">2167</span>
<span style="color: #008080;">2168</span> <span style="color: #008000;">//</span><span style="color: #008000;"> COOKIE</span>
<span style="color: #008080;">2169</span> <script>
<span style="color: #008080;">2170</span> <span style="color: #0000ff;">var</span> c = document.cookie; <span style="color: #008000;">//</span><span style="color: #008000;"> COOKIE</span>
<span style="color: #008080;">2171</span> <span style="color: #0000ff;">var</span> script = document.createElement(<span style="color: #800000;">'</span><span style="color: #800000;">script</span><span style="color: #800000;">'</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> script </span>
<span style="color: #008080;">2172</span> script.src = <span style="color: #800000;">'</span><span style="color: #800000;">demo.php?c=</span><span style="color: #800000;">'</span> + c; <span style="color: #008000;">//</span><span style="color: #008000;"> </span>
<span style="color: #008080;">2173</span> document.body.appendChild(script); <span style="color: #008000;">//</span><span style="color: #008000;"> DOM </span>
<span style="color: #008080;">2174</span>
2175
2176
2177 /* CLI */
2178 //
2179 php -h
2180 // -f
2181 php [-f] [--] [args...]
2182 // PHP
2183 php [options] -r [--] [args...]
2184 PHP ,
2185 // phpinfo()
2186 php -i/--info
2187 // PHP
2188 php -l/--syntax-check
2189 // PHP Zend
2190 php -m/--modules
2191 // PHP,PHP SAPI Zend
2192 php -v/--version
2193
2194 //
2195 $argv
2196 , $argv[0]
2197 $argc
2198 , $argc 1
2199
2200 register_argc_argv
2201
2202
2203 /* */
2204 : 。 , 。
2205 : 。
2206 MVC : -> -> -> -> -> ->
2207
2208
2209 /* */
2210 set_time_limit($seconds) // ( 30 ),0
2211 ini_get($varname) //
2212 ini_set($varname, $newvalue) //
2213 extension_loaded($ext_name) //
2214 get_extension_funcs($ext_name) //
2215
2216
2217 /* 【 】 */
2218 version_compare(str $ver1, str $ver2 [,str $operator]) //
2219 $operator , :, gt, >=, ge, ==, =, eq, !=, <>, ne
2220 $operator, 。
2221 @
2222 memory_get_usage //
2223 memory_get_peak_usage //
2224 getrusage // CPU (Windows )
2225 uniqid([$prefix]) // 、 ID
2226 highlight_string($str [,$return]) //
2227 $return: TRUE, , 。 TRUE, FALSE。
2228 highlight_file($file [,$return]) //
2229 __halt_compiler //
2230 get_browser //
2231 get_browser ([ string $user_agent [, bool $return_array = false ]] )
2232 TRUE, array, object
2233 eval($code) // PHP
2234 gzcompress($str [,$level=-1]) //
2235 gzuncompress($str) //
2236 gzencode($str [,$level=-1]) //
2237 gzdecode($str) //
2238 ignore_user_abort($bool) //