クラスのオートローディング オブジェクト指向アプリケーションを作成する開発者の多くは、 クラス定義毎に一つのPHPソースファイルを作成します。 最大の問題は、各スクリプトの先頭に、必要な読み込みを行う長いリストを 記述する必要があることです(各クラスについて一つ)。 spl_autoload_register() 関数を使うと、 任意の数のオートローダーを登録でき、 クラスやインターフェイスが定義されていなくても自動的に読み込めるようになります。 オートローダーを登録すれば、PHPがエラーで止まる前にクラスをロードする最後の チャンスが与えられます。 クラスに類似した言語構造は、同じやり方でオートロードできます。 これには、クラス、インターフェイス、トレイト、列挙型が含まれます。 警告PHP 8.0.0 より前のバージョンでは、 __autoload() 関数でもクラスやインターフェイス

定数 目次構文自動的に定義される定数マジック定数 定数は、値のためのID(名前)です。この名前が示すように、定数の値は スクリプト実行中に変更できません (マジック定数 は例外です。これは実際は定数ではありません)。 定数は大文字小文字を区別します。慣習的に、 定数は常に大文字で表記されます。 注意:PHP 8.0.0 より前のバージョンでは、 define() 関数を使って定義された定数は、 大文字小文字を区別しない場合がありました。 定数の名前は、PHP のラベルと同じ規則に従います。有効な定数の名前は、 文字またはアンダースコアで始まり、任意の数の文字、数字、 アンダースコアが後に続きます。正規表現で示すと次のようになります。 ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$ define() 関数を使うと、 予約語や有効でない名前の定数を定義す


テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基本 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~)java.nio.file.Filesとtry-with-resources(J
少しのコードで実装可能なHTML小技集これまで「少しのコードで実装可能な10のCSS小技集」シリーズでCSSのちょっとしたTipsを紹介していましたが、今回はHTMLバージョン!知っていると使い勝手がちょっとよくなる小技を集めました! 少しのコードで実装可能な 10 のCSS 小技集 目次セレクトメニューの選択肢をグループ化type 属性値によって入力欄が変化スマートフォンでエンターキーのテキストを変える画像の遅延読み込みテキストの折り返し位置を指定する番号付きリストの順番を変更する簡単アコーディオン任意のテキストを自動翻訳させないリンク先のテキストを指定してスクロールさせる1. セレクトメニューの選択肢をグループ化複数の選択肢を用意できるおなじみの select タグ。項目は option タグを利用しますが、さらに optgroup タグで囲むことでグループ化できます。選択肢が多い場
Google、ORMが生成するSQLが遅いときの調査を容易にする「sqlcommenter」をオープンソースで公開。Rails、Spring、Djangoなど主要なフレームワークに対応SQL文を直接書かなくとも、自動的にSQL文を生成、実行してくれるORM(Object-RelationalMapper)は、プログラミングを容易にしてくれる技術としてRailsやHibernate、Springなどさまざまなフレームワークなどで活用されています。 一方で、ORMが生成するSQL文はときに複雑に、あるいは非効率なものとなり、データベース処理の遅さにつながることもあります。 このとき、SQL文の生成と実行を明示的にコードとして記述する必要がないというORMの特徴が、なぜデータベース処理が遅くなったのか、どのようなSQL文が生成され、そのどこに原因があるのか、といった調査を難しくている面があり

ソフトウェアエンジニアが知っているべきSOLID原則についての記事です。SOLID原則は、5つの原則の頭文字を並べた言葉で、S・O・L・I・Dそれぞれの原則について、5回に分けて説明します。 1) Single Responsibility Principle:単一責任の原則 2) Open/closed principle:オープン/クロースドの原則 3) Liskov substitution principle:リスコフの置換原則 4) Interface segregation principle:インターフェース分離の原則 5) Dependency inversion principle:依存性逆転の原則 今回はSingle Responsibility Principle(単一責任の原則 / SRP)についてです。 なぜSOLID原則が必要なのか?初回なので、なぜソフトウェア

エイリアス化された名前空間のメンバーにアクセスするには、名前空間エイリアス修飾子 :: を使用します。 ::修飾子は、2 つの識別子の間でのみ使用できます。 左側の識別子には、名前空間エイリアス、extern エイリアス、または global エイリアスのいずれかを指定できます。 例えば次が挙げられます。 using エイリアス ディレクティブを使用して作成された名前空間エイリアス: using forwinforms = System.Drawing; using forwpf = System.Windows; public class Converters { public static forwpf::Point Convert(forwinforms::Point point) => new forwpf::Point(point.X, point.Y); } extern エイ
複数のVisual Studioのプロジェクトで同じソース・コードを使いたい場合や同じバージョン情報を設定したい場合など、ソース・ファイルを共有したいことがある。共有すれば、1回の修正で、すべてのプロジェクトにそれを適用できるので、効率がよいからだ。 このような目的には、Visual Studioの標準機能として搭載されているリンク・ファイル機能が役立つ。この機能は、Visual Studio .NET(2002/2003)およびVisual Studio 2005で利用できる。本稿では、このリンク・ファイル機能の使い方を紹介する。サンプルとして、Visual Studio 2005を使って、複数のプロジェクトでバージョン情報ファイル(AssemblyInfo.cs)の一部の情報(=.NETアセンブリに設定する会社名と著作権情報)を共有する例を示す。 Visual Studioのリンク・
help.txt For Vim バージョン 9.1. Last change: 2025 Jun 27VIM - メインヘルプファイル k 移動: カーソルを使用するか、"h" で左、"j" で下、 h l "k" で上、"l" で右に移動できる。 j ヘルプの終了: ":q<Enter>" を使用する。Vim の終了: ":qa!<Enter>" を使用する (注意! 変更はすべて破棄される)。 項目へジャンプ: タグ (例: bars) にカーソルを合わせ、CTRL-] を押す。 マウスでジャンプ: (xterm またはGUI で) マウスを有効にするには ":set mouse=a" と入力する。 bars 等のタグ上でマウスの左ボタンをダブルクリックする。 元の場所に戻る: CTRL-O を押す
目的の文字コードに合ったEncodingオブジェクトを取得する例えばテキストファイルを文字列(String型)として読み込む時、そのテキストファイルの文字コードが何であるかによって、適切なエンコーディング(注)を選択する必要があります。そのエンコーディングを表すのが、Encodingオブジェクトです。適切なEncodingオブジェクトを選択してテキストファイルを読み込まないと、文字化けします。 注:「エンコーディング」とは、どのように文字列をバイト列に変換(エンコード)するかという方法のことです。なおここでは、バイト列を文字列に変換(デコード)する方法を含めて「エンコーディング」と呼ぶことにします。 同様に文字列をテキストファイルに書き込む時も、どのような文字コードで書き込むかによって適切なEncodingオブジェクトを選択する必要があります。 ここでは、目的の文字コードに合ったEncod

DataTable自体にはソートをしてくれる機能がありませんが、DataTable.Select を応用することでソート処理ができます。 DataTable.Select() メソッドが DataTable の中でフィルタをかけるのに使えるということは(VB.Net)DataTableで特定の列の最大値を含む行を取得したい。(DataTable.Select)で紹介しました。 今回は純粋にソートだけを行う方法です。 問題は、DataTable.Select() メソッドは引数で指定された条件にあった DataRow 配列を返すという点です。DataTable 自体の内部のソートはしてくれません。 ということで、返り値の DataRow 配列を元に、新しい DataTable を作成するという方法をとりました。 コードはこんな感じです。 'ソート対象のテーブル作成 Dim dtbl As N

複数のクラスでシグネチャが共通のメソッドなどを作るには仮想メンバ/抽象クラス/インタフェースを利用できる。それらの違いと使い分けのポイントを示す。 連載「.NET TIPS」 継承したクラスに(実装は異なるかもしれないが)シグネチャが同じメソッド/プロパティがあることを保証するには、仮想メンバ/抽象クラス/インタフェースという3通りの方法がある。本稿ではその違いを整理して解説する。 単純にクラスを継承した場合、継承元(親クラス)にあるメソッド/プロパティは、継承先(子クラス)にも引き継がれる。ただし、そのメソッド/プロパティの実装は、親クラスにある1つだけだ。全ての子クラスで、その動作は同じである。 そうではなく、子クラスによって実装を変えたい場合がある。例えば「BaseClass」型を継承して2つのクラス「ChildClass1」/「ChildClass2」を作ったとき、どちらにも同じシ
![仮想/抽象/インタフェースを使い分けるには?[C#/VB]](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f4a588395243e748889e83a9b0d50ab45cb79c8e4%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fimage.itmedia.co.jp%252Fait%252Farticles%252F1801%252F10%252Fl_dt-01.gif&f=jpg&w=240)
RegexクラスのSplitメソッドを使用して、正規表現にマッチする部分をセパレーターとして、文字列を分割する方法を解説する。 連載目次 正規表現パターンに一致する文字列をセパレーター(区切り)として使って文字列を分割するには、Regexクラス(System.Text.RegularExpressions名前空間)のSplitメソッドを利用する。本稿では、Splitメソッドの使い方を解説するとともに、少し高度な正規表現の書き方も紹介する。 RegexクラスのSplitメソッドは.NET Frameworkの初期からあるものだが、掲載したサンプルコードの全てを試すにはVisual Studio 2015以降が必要である。 なお、正規表現の書き方については、以下の.NET TIPSをご覧いただきたい。
![正規表現を使って文字列を分割するには?[C#/VB]](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2fd46e044f16416f58f71f1f1a0c5b3690ad57ffc3%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fimage.itmedia.co.jp%252Fait%252Farticles%252F1702%252F15%252F240_news024.png&f=jpg&w=240)
連載目次 ある文字列を特定の「文字」により分割するには、Stringクラス(System名前空間)のSplitメソッドが利用できる(使用例については「TIPS:メソッドに可変長パラメータを渡すには?」を参照 )。しかし、Splitメソッドでは文字列を「文字列」により分割することはできない。 文字列を文字列により分割したい場合には、正規表現が利用可能なRegexクラス(System.Text.RegularExpressions名前空間)のSplitメソッドを使用することもできるが、正規表現を使うまでもないような用途には、VB.NETのSplit関数が使える。本稿では、VB.NETおよびC#からVB.NETのSplit関数を利用して文字列を分割する方法について解説する。 VB.NETにおけるSplit関数を使った文字列の分割 Split関数は文字列(第1パラメータ)を、区切り文字列(第2パ

DataGridView編メニュー全般DataGridViewの現在のセルを取得、または変更するDataGridViewの指定したセルを編集できないようにする 条件に応じてセルを編集できないようにするDataGridViewの一番下の新しい行(新規行)を非表示にして、ユーザーが新しい行を追加できないようにするDataGridView内のある行が新しい行(新規行)か調べるDataGridViewの行をユーザーが削除できないようにする 条件に応じてユーザーが行を削除できないようにする 指定した列がDataGridViewに存在するか調べるDataGridViewの列や行を非表示、または削除するDataGridViewの列の幅や行の高さをユーザーが変更できないようにするDataGridViewの列の幅や行の高さを自動的に調整するDataGridViewの指定した列や行を固定してス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く