2018/11/22 static,静的プロパティ,self,定数など

静的(static)プロパティ

  • 静的(static)プロパティはクラスがインスタンス化されていなくても利用できる。
  • インスタンスかされているものも含めて全てのオブジェクトに共通。
  • 静的プロパティにアクセスする方法(クラスがEmployee,静的プロパティが$company)

①クラス外

Employee::$company

②クラスコンテキスト

self::$company

クラス定数

  • クラス定数にアクセスする方法(クラスがEmployee,静的プロパティが$company)

①クラス外

Employee::REGULAR

②クラスコンテキスト

self::REGULAR

 

2018/11/11 相対パスについて

相対パスの指定方法を毎回忘れるのでメモ

http://www.shoshinsha.com/hp/1hour/know/pass.html


同じ階層のファイルを指定する場合

「ファイル名のみ」、あるいは「./ファイル名」


1つ下の階層のファイルを指定する場合

「フォルダ名/ファイル名」、あるいは「./フォルダ名/ファイル名」


1つ上の階層のファイルを指定する場合

「../ファイル名」


 

2018/10/15 パスワードのハッシュ,password_hash,password_verify

<?php

$pass1=’pass1′;
$pass2=’pass2′;
$pass3=’jkdlsddfwer’;
$pass4=’23423534534′;

$hash1=password_hash($pass1,PASSWORD_BCRYPT);
print $hash1;
print ‘<br>’;
$hash2=password_hash($pass2,PASSWORD_BCRYPT);
print $hash2;
print ‘<br>’;
$hash3=password_hash($pass3,PASSWORD_BCRYPT);
print $hash3;
print ‘<br>’;
$hash4=password_hash($pass4,PASSWORD_BCRYPT);
print $hash4;
print ‘<br>’;
print ‘<br>’;

$result_a=password_verify(‘pass1’,$hash1);
if($result_a===true){
echo “OK!!”;
}else{
echo “NG”;
}
print ‘<br>’;

$result_a=password_verify(‘jkdlsddfwer’,$hash3);
if($result_a===true){
echo …

2018/9/25 HTML_QuickFormのバリデートのjavascript関数について、引数としてthisを渡す

pearのHTML_QuickFormを使っていて、addRuleメソッドで引数としてclientを指定するとjavascriptでバリデートを行う。そのソースコードを見たところ、


<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<html>
<head>
<meta http-equiv=”Content-Typecontent=”text/html; charset=UTF-8“>
<title>Testing PEAR HTML_QuickForm</title>
</head>
<body>
<script type=”text/javascript“>
//<![CDATA[
function validate_frmTest(frm) {
var value = ”;

2018/9/13 cookieについて

cookieを使って履歴URLを表示したりした。

cookie_139.php

php_practice_8.php

php_practice_7.php

間で履歴を表示。cookieにはURL文字列を空文字で区切って$uriに代入。explode(” “,$uri)で配列にする($uriarr)。繰り返しで$uriarrの要素を表示。

直近10回まで表示しようとした時、アクセスが10回未満の場合、$uriarrの要素が無い部分も表示しようとしてエラーが出た。(「Notice: Undefined offset」)

要素が無い場合breakで終了する条件分岐で解決した。

マスターブックの例にあるが「各ページに何回アクセスしたか」すぐできそう。

クッキーでいろいろできそうだが、データベースでデータ保存もやりたい。

2018/9/10 phpのスコープについてまとめる。

https://qiita.com/TakashiOshikawa/items/0f2420a1c94ba78c9035

①関数スコープはある。関数ブロック内で宣言した変数を関数ブロック外から参照はできない。これはjavascriptと同じ。

②グローバルスコープ。関数外で宣言された変数。

    $val = 'グローバルスコープ';

    function func2()
    {
        return $val;
    }

    echo $val;  //グローバルスコープ
    echo func2(); //Undefined Variable: val(エラー)

phpの場合グローバル変数を関数内から参照できない(グローバル宣言すればで参照できる)。ここはjavascriptと異なる。

javascriptの場合、関数内にグローバル変数と同じ名前のローカル変数が無ければグローバル変数を参照する。同名のローカル変数があれば、ローカル変数を参照するので、グローバル変数は参照できない。

上記例は、javascriptの場合、関数内で$valは宣言されていないのでグローバル変数を参照するのだが、phpの場合は上記のままでは参照できない。(グローバル宣言をすれば参照できる。ただqiitaの↑ページによるとグローバル宣言はあまりしない方がよいらしい。)


<?php

$val=500;

function func2($n)
{
$val=40;
print $val;
print “<br>”;
print …

2018/9/8 コメントまとめ html,javascript,php

<script type="text/javascript">
<!-- JacaScript未対応ブラウザ対策
// 実際には入力チェックなどするでしょ
var today = new Date();
var month = today.getMonth() + 1;
var day = today.getDate();
document.write("今日は" + month + "月"+ day + "日です。");
// JacaScript未対応ブラウザ対策 -->
</script>

javascript未対応ブラウザの場合htmlコメントが無いと赤文字部分がそのまま表示されてしまうが、上記のようにhtmlコメントアウトすると赤文字部分は表示されない、ということですね、はい。

2018/9/6 プリミティブ・数値リテラル・メソッドについて javascript

十一章第六回 プリミティブについて2

特になし。ほとんど定義なので理解するだけ。

<!doctype html>
<html>
<head>
<title>test</title>
</head>
<body>

<script type=”text/javascript”>

console.log(“3/0= “+3/0); // Infinity
console.log(“-3/0= “+(-3/0));
console.log(“Infinityの型は “+(typeof (1/0))); // “number”
console.log(“Infinity-Infinity= “+(Infinity-Infinity)); // NaN
console.log(“Infinity/Infinity= “+(Infinity/Infinity));
console.log(“0/0= “+(0/0));
console.log(“”);

console.log(‘parseInt(“123px”)= ‘+(parseInt(“123px”))); // 123

console.log(‘Number(“123px=”)= ‘+(Number(“123px”))); // NaN…

2018/9/5 Rangeについて javascript

<!doctype html>
<html>
<head>
<title>test</title>
</head>
<body>

<p id=”one”>1abcdefghi</p>
<p id=”two”>
2abc
<strong>
強い
</strong>
gh
</p>
<p id=”three”>3abcdefgh</p>
<br><br><br>

<p id=”vanish”>消えろ!!</p>

<script type=”text/javascript”>
var rng1=document.createRange();
var rng2=document.createRange();
var rng3=document.createRange();
var rngs=document.createRange();
var p1=document.getElementById(“one”);
var p2=document.getElementById(“two”);
var p3=document.getElementById(“three”);
var ps=document.getElementsByTagName(“strong”)[0];…

2018/9/3 css&イベントパート2 javascript

全開の続き。CSSStyleSheetを使っていろいろやる。

<!doctype html>
<!doctype html>
<html>
<head>
<title>test</title>
<style type=”text/css” id=”divsheet”>

div {
background-color: black;
}
p {
background-color: skyblue;
}
</style>
<style type=”text/css” id=”bodysheet”>
body {
background-color: red;
}
</style>
</head>
<body>

<p>testtest</p>
<br>
<br>
<p id=”midp”>真ん中のp</p>

<p id=”middle”></p>…