1年以上phpを勉強していてメモが溜まってきて、内容がかなり複雑なので、それを整理するために記事を書かせていただきます。
php 基本部分
<span style="font-family:新宋体">PHP</span>
テキストを出力するための基本的なコマンド: <span style="font-family:新宋体">echo</span>
と <span style="font-family:新宋体">print</span>
。
echo と print の違い
<span style="font-family:新宋体">echo</span>
は php ステートメントであり、<span style="font-family:新宋体">print</span>
と <span style="font-family:新宋体">print_r</span>
は関数です。ステートメントには戻り値がありませんが、関数には戻り値を含めることができます。値 ( を使用しない場合でも)
<span style="font-family:新宋体">echo</span>
を使用して 1 つ以上の文字列を出力します。 <span style="font-family:新宋体">print</span>
は単純型変数 (int、string など) の値のみを出力できます<span style="font-family:新宋体">print_r</span>
は複合型変数 (配列、オブジェクトなど) の値を出力できます
var_dump と print_r の違い
<span style="font-family:新宋体">var_dump</span>
は式の型と値を返しますが、<span style="font-family:新宋体">print_r</span>
は結果のみを返します。デバッグ コードと比較して、<span style="font-family:新宋体">var_dump</span>
を使用する方が読みやすいです。
変数
変数は、数値、テキスト文字列、配列などの値を保存するために使用されます。 php のすべての変数は $ 記号で始まります。
php 変数名では大文字と小文字が区別されます。
php には 3 つの異なる変数スコープがあります:
<code>local(局部)<br>global(全局)<br>static(静态)</code>
関数の外で宣言された変数は <span style="font-family:新宋体">Global</span>
スコープを持ち、関数の外でのみアクセスできます。
関数内で宣言された変数には <span style="font-family:新宋体">LOCAL</span>
スコープがあり、関数内でのみアクセスできます。
<span style="font-family:新宋体">global</span>
キーワードは、関数内のグローバル変数にアクセスするために使用されます。
php 静的キーワード
通常、関数が完了/実行すると、すべての変数が削除されます。ただし、ローカル変数を削除したくない場合もあります。これを達成するにはさらなる作業が必要です。
これを実現するには、最初に変数を宣言するときに static キーワードを使用します:
<code><?php <br>function mytest() {<br> static $x=-1;<br> echo $x;<br> $x--;<br>}<br>mytest();//-1<br>echo "<br>";<br>mytest();//-2<br>echo "<br>";<br>mytest();//-3<br>?></code>
php タイプ
php类型:**php 支持八种原始类型。**
ブール値
ブール値を指定するには、キーワード true または false を使用します。どちらも大文字と小文字は区別されません。
整数型
(int) を使用して、小数を整数にキャストできます。
<code><?php <br> var_dump((int)(26/3));//int(8)<br>?></code>
配列
php には 3 種類の配列があります:
<code>索引数组:就是下标是顺序整数作为作为索引(比如第几排第几列)$class[5]<br>关联数组:就是下标是字符串作为索引(比如名字)$class2["zhangsan"]<br>多维数组 - 包含一个或多个数组的数组</code>
添字は整数または文字列です。
<code><?php <br>$array = array(<br> "foo" => "bar",<br> "bar" => "foo",<br>);<br>// 自 php 5.4 起<br>$array = [<br> "foo" => "bar",<br> "bar" => "foo",<br>];<br>?></code>
配列セルには、<span style="font-family:新宋体">array[key]</span>
構文を通じてアクセスできます。
注: これは、キー名を常に引用するという意味ではありません。定数または変数のキー名を引用符で囲む必要はありません。そうしないと、<span style="font-family:新宋体">PHP</span>
はそれらを解析できません。
配列演算子
名前の例 結果 $a $b union $a と $b の和集合 $a == $b $a と $b が同じキー/値を持つ場合の等価性ペア true $a === $b 一致 $a と $b が同じキー/値ペアを持ち、順序も型も同じである場合は true $a != $b 不等 $a が $ b と等しくない場合は true $a $b は等しくない。$a が $b に等しくない場合、true$a !== $b は等しくない。$a が $b に等しくない場合、true である。
<span style="font-family:新宋体">+</span>
演算子は、右側の配列要素を左側の配列に追加します。両方の配列にキーが存在する場合は、左側の配列のキーのみが使用され、左側の配列のキーは使用されます。右側は無視されます。
オブジェクト
オブジェクトを初期化するには、new ステートメントを使用してオブジェクトを変数にインスタンス化します。
一般的に使用される関数
strlen() 関数は、文字列の長さを計算するために使用されます。
strpos() 関数は、文字列または文字列内の文字を取得するために使用されます。
定数
定数は、define() 関数を使用して定義できます。定数を一度定義すると、変更したり未定義にしたりすることはできません。
一般的に使用されるマジック定数:
echo poems ;//outputs "homeric epic"
?>
php 文字列演算子 p >
php には、文字列演算子が 1 つだけあります。
連結演算子 <span style="font-family:新宋体">(.)</span>
は、2 つの文字列値を連結するために使用されます。例: echo "a= ".$a."<br>";
文字列リテラル「a=」の左側は変数 $a の値に接続され、2 番目の部分は変数 $a の値に接続されます。 place は改行文字 <span style="font-family:新宋体">"<br>"</span>
に接続されています
php 関数
関数は呼び出されたときにのみ実行されます。これは js と同じです。同様に。 、関数定義では、単語で始まるファンクション キーも使用されます。
<code><?php <br> function sum($x,$y){<br> $z=$x + $y;<br> return $z;<br> }<br> echo "-2+10= ".sum(-2,10);//outputs "-2+10=8"<br>?></code>
<span style="font-family:新宋体">return</span>
ステートメントがない場合、上記は "-2 10=";
プロセス制御
ここでは、<span style="font-family:新宋体">foreach</span>
ステートメントのみについて説明します。
<span style="font-family:新宋体">foreach</span>
ステートメントは出力配列を走査します。
構文:
foreach (array_expression as $value){ statement}; foreach (array_expression as $key => $value){ statement};
パラメータ <span style="font-family:新宋体">array_expression</span>
は走査する配列を指定し、<span style="font-family:新宋体">$value</span>
は配列の値です。
<code><?php <br> $actors [0] ="marry";<br> $actors [1] ="lorry";<br> $actors [2] = "mike";<br> foreach ($actors as $values){<br> echo "name:$values<br>"; <br>}<br>?></code>
上記のコードは次のように出力します:
名前:marry
名前:lorry
名前:mike
2 つの重要な魔法のメソッド
1. __set( )方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你 要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。 2. __get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用
php のメソッドでは大文字と小文字が区別されません
require(dirname(__file__).'/global.php'); //引入全局文件 require(dirname(__file__).'/config.ini.php'); //引入基本配置文件
オブジェクト演算子と二重コロン演算子
クラスのメンバー メソッドでは、-> (オブジェクト演算子): <span style="font-family:新宋体">$this->property</span>
(ここで、property は属性名) を使用して、非静的プロパティにアクセスします。
静的プロパティには、<span style="font-family:新宋体">::</span>
(二重コロン): <span style="font-family:新宋体">self::$property</span>
を使用してアクセスします。
=> および ->
<span style="font-family:新宋体">=></span>
配列メンバーはシンボルにアクセスし、<span style="font-family:新宋体">-></span>
オブジェクトメンバーはシンボルにアクセスします。<span style="font-family:新宋体">$this</span>
-<span style="font-family:新宋体">>$name=$value</span>
: 現在のクラスの <span style="font-family:新宋体">name</span>
変数の値を設定します。 to <span style="font-family:新宋体">$value</span>
;<span style="font-family:新宋体">$this</span>
はクラス自体を表し、<span style="font-family:新宋体">-></span>
はクラス メンバーにアクセスするための演算子です
二重コロン演算子 (<span style="font-family:新宋体">::</span>
) クラス名 <span style="font-family:新宋体">::</span>
静的プロパティ/メソッド
「<span style="font-family:新宋体">::</span>
」は呼び出しに使用されますクラスの静的プロパティとメソッド
<span style="font-family:新宋体">include()</span>
: 外部ファイルが含まれます。構文形式は include (string filename) です。<span style="font-family:新宋体">require()</span>
: エラー メッセージを出力し、スクリプトを終了します。<span style="font-family:新宋体">include_once()</span>
:同じものを複数回ファイルに呼び出すと、プログラムはそれを 1 回だけ呼び出します<span style="font-family:新宋体">require_once()</span>
: 最初にファイルが他の場所で呼び出されているかどうかを確認します<span style="font-family:新宋体">array_pop()</span>
: 配列の最後の要素を取得して返します<span style="font-family:新宋体">count()</span>
: 配列内の要素を数える 数値<span style="font-family:新宋体">array_search()</span>
: 配列内の要素のキー名を取得する<span style="font-family:新宋体">$array_keys()</span>
: 配列内で繰り返される要素のすべてのキー名を取得する
一重引用符と二重引用符
php は一重引用符で囲まれたデータを通常の文字列として扱い、それ以上処理しません。二重引用符は文字列
get と post
を処理する必要もあります。$_get[ ] および $_post[ ] グローバル配列: それぞれ get メソッドと post メソッドによって現在のページに渡されたデータを受け取るために使用されます。 「[ ]」には名前が含まれます。
php でパラメータを渡すには、$_post[ ]、$_get[ ]、$_session[ ] という 3 つのメソッドが一般的に使用されます。これらは、フォーム、url、およびそれぞれのセッション変数の値。
フォーム送信における get メソッドと post メソッドの違いは次のように要約されます。
<code>GET是从服务器上获取数据,POST是向服务器传送数据。<br>GET 是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。<br>对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。<br>GET传送的数据量较小,不能大于2KB(这主要是因为受URL长度限制)。POST传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。<br>GET 安全性较低,POST安全性较高。因为GET在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记 录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一 同显示在用户面前。POST的所有操作对用户来说都是不可见的。</code>
フォームを送信するとき、メソッドが指定されていない場合、デフォルトは get リクエスト (.net)デフォルトは post)、フォームで送信されたデータは url に追加され、? で url から区切られます。英数字はそのまま送信されますが、スペースは " " 記号に変換され、その他の記号は %xx に変換されます。ここで、xx は記号の 16 進数の ascii (または iso latin-1) 値です。 get リクエストによって送信されたデータは http リクエスト プロトコル ヘッダーに配置され、post によって送信されたデータはエンティティ データに配置されます。get によって送信されたデータは最大 2048 バイトのみですが、post にはこの制限がありません。 post で渡されるパラメータは、http プロトコルで渡されるテキストである doc 内にあり、パラメータ部分は受け入れ時に解析されます。パラメータを取得します。一般的には、post を使用することをお勧めします。 post は暗黙的にデータを送信し、get は url で渡され、機密にする必要のないデータを渡すために使用されます。get は url のパラメータで渡されますが、post はそうではありません。
1. get によって要求されたデータは url に追加され (つまり、データは http プロトコル ヘッダーに配置され)、url を分割してデータを送信します。パラメータは &
2. get メソッドで送信できるデータは最大 1024 バイトまでです。理論上、post には制限がなく、より大量のデータを転送できます。最大値は iis4 では 80 kb、iis5 では 100 kb です。 p>
http ステータス コード
cookie とセッションの違い
cookie の内容には主に、名前、値、有効期限、パス、ドメインが含まれます。パスとドメインを合わせて cookie のスコープを形成します。有効期限が設定されていない場合、この cookie の有効期間はブラウザ セッション中であることを意味し、ブラウザ ウィンドウを閉じると cookie は消えます。ブラウザーのセッション中に保持されるこのタイプの cookie は、セッション cookie と呼ばれます。
セッション cookie は通常、ハードディスクではなくメモリに保存されますが、もちろん、この動作は仕様で指定されているわけではありません。有効期限が設定されている場合、ブラウザは cookie をハード ディスクに保存します。ブラウザを閉じて再度開いても、設定された有効期限を超えるまでこれらの cookie は有効です。
プログラムがクライアントのリクエストに対してセッションを作成する必要がある場合、サーバーはまずクライアントのリクエストにセッション識別子が既に含まれているかどうかを確認します
(セッション id と呼ばれます)。含まれている場合は、以前にセッション識別子が含まれていることを意味します。このクライアントに対してセッションが作成されている場合、サーバーはセッション id に従ってこのセッションを取得し
使用します (取得できない場合は、新しいセッションが作成されます)。クライアント リクエストにセッション id、このクライアント用にセッションが作成されます。そして、このセッションに関連付けられたセッション id を生成します
セッション id の値は、繰り返されず、偽造するパターンが簡単に見つからない文字列である必要があります。このセッション idこの応答で使用されます。 は保管のためにクライアントに返されます。このセッション id を保存する方法には cookie を使用できるため、対話プロセス中にブラウザがルールに従ってこの id をサーバーに自動的に送信できます。
1. cookie データはクライアントのブラウザに保存され、セッション データはサーバーに保存されます。
2. cookie は安全性が高くなく、ローカルに保存された cookie を他人が解析して cookie を騙すことができます
セキュリティを考慮するとセッションを使用する必要があります。
3. セッションはサーバー上に一定期間保存されます。アクセスが増えるとサーバーのパフォーマンスをさらに消費します
サーバーのパフォーマンスを下げるには、cookieを使用する必要があります。
4. 1 つの cookie によって保存されるデータは 4k を超えることはできません。多くのブラウザでは、サイトで保存できる cookie は 20 個までに制限されています。
5. 個人的な提案:
ログイン情報などの重要な情報を session として保存します
他の情報を保持する必要がある場合は、cookie に配置できます
php コードの仕様
1. 変数の割り当ては、等しい間隔と配置を維持する必要があります。
2. 各行の末尾に余分なスペースを含めることはできません
3. unix 系システムでは大文字と小文字が区別されるため、ファイルの名前と呼び出しの大文字と小文字が一致していることを確認します。
4. メソッド名は文字のみで構成でき、アンダースコアは使用できません。最初の文字は小文字である必要があります。後続の各単語の最初の文字は大文字にする必要があります。
5. 属性名は文字のみで構成でき、アンダースコアは使用できません...
6. オブジェクト メンバーにアクセスするには、常に「get」メソッドと「set」メソッドを使用する必要があります。
7. クラス メンバー メソッドがプライベートとして宣言されている場合、二重アンダースコアで始まる必要があります。 "__"; protected として宣言される場合は、単一のアンダースコアで始まる必要があります。" _"; public として宣言されたメンバー属性には、いかなる場合でもアンダースコアを含めることはできません。
8. 頻繁に使用されるメソッドをグローバル関数として定義する必要がある場合は、クラス内で静的形式で定義する必要があります。
9. 関数の名前付けには小文字とアンダースコアを使用する必要があります。関数が何を行うのかを明確に説明します。
10.ブール値と null 値は両方とも小文字です。
11. 文字列がプレーン テキストで構成されている場合 (つまり、変数が含まれていない場合)、区切り文字として常に一重引用符 (') を使用する必要があります。
12. 使用する配列型で連想配列を宣言する場合は、各行のキーと値が確実に揃うように複数の行に分割する必要があります。
13. クラス内のすべてのコードは 4 つのスペースでインデントする必要があります。
14. var を使用して変数を宣言することはできません。クラス メンバー変数は、プライベート、プロテクト、パブリックとして宣言する必要があります。通常、クラス メンバーにアクセスするには get メソッドと set メソッドが使用されます。
15. メソッドはスコープを宣言するために常に private、protected、または public を使用する必要があります。
16. 関数またはメソッド名とパラメータ括弧の間に余分なスペースは許可されません。