# migrations

dir: embeddings_queue
filename: 00001-embeddings.sqlite.sql
hash: d3755dfd232be8e8301f4d7fcfb3a486
sql:
CREATE TABLE embeddings_queue (
    seq_id INTEGER PRIMARY KEY,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    operation INTEGER NOT NULL,
    topic TEXT NOT NULL,
    id TEXT NOT NULL,
    vector BLOB,
    encoding TEXT,
    metadata TEXT
);


dir: sysdb
filename: 00001-collections.sqlite.sql
hash: 38352d725ad1c16074fac420b22b4633
sql:
CREATE TABLE collections (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    topic TEXT NOT NULL,
    UNIQUE (name)
);

CREATE TABLE collection_metadata (
    collection_id TEXT REFERENCES collections(id) ON DELETE CASCADE,
    key TEXT NOT NULL,
    str_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (collection_id, key)
);


dir: sysdb
filename: 00002-segments.sqlite.sql
hash: 2913cb6a503055a95f625448037e8912
sql:
CREATE TABLE segments (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    scope TEXT NOT NULL,
    topic TEXT,
    collection TEXT REFERENCES collection(id)
);

CREATE TABLE segment_metadata (
    segment_id TEXT  REFERENCES segments(id) ON DELETE CASCADE,
    key TEXT NOT NULL,
    str_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (segment_id, key)
);


dir: sysdb
filename: 00004-tenants-databases.sqlite.sql
hash: 048867ce8fcdefe4023c7110e4433591
sql:
CREATE TABLE IF NOT EXISTS tenants (
    id TEXT PRIMARY KEY,
    UNIQUE (id)
);

CREATE TABLE IF NOT EXISTS databases (
    id TEXT PRIMARY KEY, -- unique globally
    name TEXT NOT NULL, -- unique per tenant
    tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
    UNIQUE (tenant_id, name) -- Ensure that a tenant has only one database with a given name
);

CREATE TABLE IF NOT EXISTS collections_tmp (
    id TEXT PRIMARY KEY, -- unique globally
    name TEXT NOT NULL, -- unique per database
    topic TEXT NOT NULL,
    dimension INTEGER,
    database_id TEXT NOT NULL REFERENCES databases(id) ON DELETE CASCADE,
    UNIQUE (name, database_id)
);

-- Create default tenant and database
INSERT OR REPLACE INTO tenants (id) VALUES ('default_tenant'); -- The default tenant id is 'default_tenant' others are UUIDs
INSERT OR REPLACE INTO databases (id, name, tenant_id) VALUES ('00000000-0000-0000-0000-000000000000', 'default_database', 'default_tenant');

INSERT OR REPLACE INTO collections_tmp (id, name, topic, dimension, database_id)
    SELECT id, name, topic, dimension, '00000000-0000-0000-0000-000000000000' FROM collections;
DROP TABLE collections;
ALTER TABLE collections_tmp RENAME TO collections;


dir: metadb
filename: 00001-embedding-metadata.sqlite.sql
hash: 2b4cf52c4bb2676e21d6860a4409f856
sql:
CREATE TABLE embeddings (
    id INTEGER PRIMARY KEY,
    segment_id TEXT NOT NULL,
    embedding_id TEXT NOT NULL,
    seq_id BLOB NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE (segment_id, embedding_id)
);

CREATE TABLE embedding_metadata (
    id INTEGER REFERENCES embeddings(id),
    key TEXT NOT NULL,
    string_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (id, key)
);

CREATE TABLE max_seq_id (
    segment_id TEXT PRIMARY KEY,
    seq_id BLOB NOT NULL
);

CREATE VIRTUAL TABLE embedding_fulltext USING fts5(id, string_value);


dir: metadb
filename: 00002-embedding-metadata.sqlite.sql
hash: 12a570f7121b3a8ce750a2a7c36da20f
sql:
-- SQLite does not support adding check with alter table, as a result, adding a check
-- involve creating a new table and copying the data over. It is over kill with adding
-- a boolean type column. The application write to the table needs to ensure the data
-- integrity.
ALTER TABLE embedding_metadata ADD COLUMN bool_value INTEGER


dir: metadb
filename: 00003-full-text-tokenize.sqlite.sql
hash: f97ad6334aeaa8f419f01110b648b97a
sql:
CREATE VIRTUAL TABLE embedding_fulltext_search USING fts5(string_value, tokenize='trigram');
INSERT INTO embedding_fulltext_search (rowid, string_value) SELECT rowid, string_value FROM embedding_metadata;
DROP TABLE embedding_fulltext;


# embeddings_queue

created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 331d5f14-b3e6-4512-92e6-dc3304e6e82e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "[Type here] \n \nTypes of Test Cases: \n \nUnit Testing \nUnit testing verifies a single function or method in isolation to ensure it works correctly. \n  Example: Testing one function\u2019s logic without database, API, or UI. \n \nIntegration Testing \nIntegration testing verifies multiple functions or modules working together, where one function may call another \nfunction or interact with external components like a database."}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5b3f72fb-674e-463c-9f06-d2f4337bf53e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Example: Testing a function that internally calls another function and processes combined results. \n \nFunctional Testing \nFunctional testing verifies the complete feature or page behavior, ensuring the system performs as expected from \nthe user\u2019s perspective. \n  Example: Testing a full page or API endpoint that processes user input and returns output. \n \n \nSpringBoot Test Cases: \n \nReferences (BEST LEARNING LINKS) \n     Official Docs \n   Spring Boot Testing"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7e2f47cb-0c5c-4fde-af0b-15ed34997bfb
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Official Docs \n   Spring Boot Testing \nhttps://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing \n     Baeldung (Highly Recommended) \n   Controller Testing \nhttps://www.baeldung.com/spring-boot-testing \n   MockMvc \nhttps://www.baeldung.com/spring-mvc-test-examples \n          YouTube (Easy) \n\u2022 Search: \u201cSpring Boot MockMvc tutorial\u201d \n\u2022 Channel: Java Brains / Amigoscode \nRecommended Approach for LMS Project  [Type here] \n \nLayer Testing Tool Notes"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 0a80b3b3-600d-49fc-80a4-210f710e3037
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Layer Testing Tool Notes \nController / API MockMvc Fast, mock dependencies \nService JUnit + Mockito Test business logic without HTTP \nRepository @DataJpaTest Test DB queries with H2 \nFull App Flow @SpringBootTest End-to-end integration \n \nUnit Test Cases \n \n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \n\u2551                    CONTROLLER TESTING QUICK REFERENCE                        \u2551 \n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 9a24557b-f568-4265-beb0-6d95d908264e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 1. TEST CLASS SETUP                                                          \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n@ExtendWith(MockitoExtension.class)  \u2190 Add this to every test class \nclass YourControllerTest { \n     \n    @Mock                                \u2190 Fake version of dependency \n    private YourService service;"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 66869b7d-71d4-4460-ba4e-c3f5c81f93e3
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "private YourService service; \n     \n    @InjectMocks                         \u2190 Real controller with fake dependencies \n    private YourController controller; \n     \n    @Test                                \u2190 This marks a test method \n    void testSomething() { } \n} \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 2. THE AAA PATTERN (Use in Every Test)                                      \u2502  [Type here]"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 20dc4ba2-2013-4dfe-8ab2-2984e222c15c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n@Test \nvoid testMethod_Success() { \n     \n    // ===== ARRANGE ===== (Set up) \n    when(service.getData()).thenReturn(data); \n     \n    // ===== ACT ===== (Execute) \n    ResponseEntity<?> response = controller.method(); \n     \n    // ===== ASSERT ===== (Check) \n    assertEquals(HttpStatus.OK, response.getStatusCode()); \n     \n    // ===== VERIFY ===== (Confirm method calls)"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f38fcfde-4c85-4de5-b3dc-fc991b1c6dc1
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "// ===== VERIFY ===== (Confirm method calls) \n    verify(service, times(1)).getData(); \n} \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 3. MOCKITO PATTERNS                                                          \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b0e0c1ab-19e6-4e41-a7b6-a5986f1d379d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 Pattern                     \u2502 When to Use                                  \u2502 \n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \n\u2502 when().thenReturn()         \u2502 Method returns a value                       \u2502 \n\u2502 when().thenThrow()          \u2502 Method throws exception                      \u2502 \n\u2502 doNothing().when()          \u2502 Method returns void                          \u2502 \n\u2502 any()                       \u2502 Any argument of any type                     \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 2b0dacd1-c0a4-46bf-a0e2-c2bc8d385258
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 anyLong()                   \u2502 Any Long argument                            \u2502 \n\u2502 anyString()                 \u2502 Any String argument                          \u2502  [Type here] \n \n\u2502 eq(value)                   \u2502 Specific value (with any())                  \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nExamples: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a07dd177-879c-474a-92db-251d5860b45f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 when(service.findById(1L)).thenReturn(user);                                 \u2502 \n\u2502 when(service.findById(any())).thenReturn(user);                              \u2502 \n\u2502 when(service.save(any())).thenThrow(new RuntimeException());                 \u2502 \n\u2502 doNothing().when(service).delete(1L);                                        \u2502 \n\u2502 when(service.update(eq(1L), any())).thenReturn(updated);                     \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 69df9124-aada-4a81-95de-35cef9611922
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 4. COMMON ASSERTIONS                                                         \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 Assertion                           \u2502 What it Checks                         \u2502 \n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 85e4fe2b-4c75-4d6a-9b90-0483669a7a78
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 assertEquals(expected, actual)      \u2502 Two values are equal                   \u2502 \n\u2502 assertNotNull(object)               \u2502 Object is not null                     \u2502 \n\u2502 assertTrue(condition)               \u2502 Condition is true                      \u2502 \n\u2502 assertFalse(condition)              \u2502 Condition is false                     \u2502 \n\u2502 assertThrows(Exception.class, ...)  \u2502 Code throws exception                  \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4f418d42-93d7-4cb0-8cad-002901c5ccc6
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Examples: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 assertEquals(HttpStatus.OK, response.getStatusCode());                       \u2502 \n\u2502 assertNotNull(response.getBody());                                           \u2502 \n\u2502 assertEquals(\"John\", user.getName());                                        \u2502  [Type here] \n \n\u2502 assertTrue(list.isEmpty());                                                  \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d8f3ae86-1129-4d83-8519-a8ac0a46e321
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 5. VERIFY METHOD CALLS                                                       \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 verify(service, times(1)).method();     \u2190 Called exactly once                \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: cba773fc-d199-407a-8a4b-5c872c32aa4c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 verify(service, times(2)).method();     \u2190 Called exactly twice               \u2502 \n\u2502 verify(service, never()).method();      \u2190 Never called                       \u2502 \n\u2502 verify(service, atLeast(1)).method();   \u2190 Called at least once               \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 6. TEST SCENARIOS (Write These for Every Method)                            \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c6eaffc3-17ad-4974-be7e-766e58b5db0a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nFor a GET method: \n\u251c\u2500\u2500    testGetMethod_Success          (Returns 200 OK with data) \n\u251c\u2500\u2500    testGetMethod_NotFound         (Returns 404 when not found) \n\u251c\u2500\u2500    testGetMethod_Error            (Returns 500 on exception) \n\u2514\u2500\u2500    testGetMethod_EmptyData        (Returns 200 with empty list) \n \nFor a POST method: \n\u251c\u2500\u2500    testPostMethod_Success         (Returns 201 CREATED)"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 91bbd278-38c4-4326-aa58-618075c8eb04
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u251c\u2500\u2500    testPostMethod_BadRequest      (Returns 400 for invalid data) \n\u251c\u2500\u2500    testPostMethod_Error           (Returns 500 on exception) \n\u2514\u2500\u2500    testPostMethod_Duplicate       (Returns 409 if already exists) \n \nFor a DELETE method:  [Type here] \n \n\u251c\u2500\u2500    testDeleteMethod_Success       (Returns 200 OK) \n\u251c\u2500\u2500    testDeleteMethod_NotFound      (Returns 404) \n\u2514\u2500\u2500    testDeleteMethod_Error         (Returns 500 on exception)"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1fd3a2c9-20fe-4b63-828b-2bc813e60b7f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 7. RUNNING TESTS                                                             \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nCommand Line: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 mvn test                              \u2190 Run all tests                        \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 31ad963c-05b3-42cf-90c3-58bae0da91fb
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 mvn test -Dtest=YourControllerTest    \u2190 Run specific test class             \u2502 \n\u2502 mvn test -Dtest=YourControllerTest#testMethod  \u2190 Run specific test method   \u2502 \n\u2502 mvn clean test jacoco:report          \u2190 Run with coverage report            \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nIDE: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 Right-click test file \u2192 Run 'YourControllerTest'                            \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6586ae12-356b-4b91-8563-d8deac2e1b7c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 Right-click test method \u2192 Run 'testMethod'                                  \u2502 \n\u2502 Click green play button next to test                                        \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 8. TEST NAMING CONVENTION                                                    \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 665db3af-c159-4f0a-8563-75cc05f4f854
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Format: test[MethodName]_[Scenario] \n \nExamples: \n\u251c\u2500\u2500 testGetUser_Success  [Type here] \n \n\u251c\u2500\u2500 testGetUser_NotFound \n\u251c\u2500\u2500 testGetUser_Error \n\u251c\u2500\u2500 testCreateUser_Success \n\u251c\u2500\u2500 testCreateUser_ValidationError \n\u251c\u2500\u2500 testDeleteUser_Success \n\u2514\u2500\u2500 testDeleteUser_NotFound \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 9. COMPLETE EXAMPLE                                                          \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 232e8270-8674-46c1-9843-014d7b5e1bb1
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nController: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 @GetMapping(\"/user/{id}\")                                                    \u2502 \n\u2502 public ResponseEntity<User> getUser(@PathVariable Long id) {                \u2502 \n\u2502     User user = userService.findById(id);                                   \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: fba81083-efc3-414a-ae25-144a77e4ab69
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502     return ResponseEntity.ok(user);                                         \u2502 \n\u2502 }                                                                            \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nTest: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 @ExtendWith(MockitoExtension.class)                                         \u2502 \n\u2502 class UserControllerTest {                                                  \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 55fd9b1a-8832-466b-948e-89e955c9f127
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502                                                                              \u2502 \n\u2502     @Mock                                                                    \u2502 \n\u2502     private UserService userService;                                        \u2502 \n\u2502                                                                              \u2502 \n\u2502     @InjectMocks                                                             \u2502 \n\u2502     private UserController userController;                                  \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 10f2cc9c-5ed5-4975-a4cb-c90af40d98ae
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502                                                                              \u2502  [Type here] \n \n\u2502     @Test                                                                    \u2502 \n\u2502     void testGetUser_Success() {                                            \u2502 \n\u2502         // ARRANGE                                                           \u2502 \n\u2502         Long userId = 1L;                                                    \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: db0cb5e9-5a61-440e-92af-faa48e79dd97
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502         User expectedUser = new User(1L, \"John\");                           \u2502 \n\u2502         when(userService.findById(userId)).thenReturn(expectedUser);        \u2502 \n\u2502                                                                              \u2502 \n\u2502         // ACT                                                               \u2502 \n\u2502         ResponseEntity<User> response = userController.getUser(userId);     \u2502 \n\u2502                                                                              \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 67799cf6-7968-403b-b152-e66c7a41440e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502         // ASSERT                                                            \u2502 \n\u2502         assertEquals(HttpStatus.OK, response.getStatusCode());              \u2502 \n\u2502         assertEquals(\"John\", response.getBody().getName());                 \u2502 \n\u2502                                                                              \u2502 \n\u2502         // VERIFY                                                            \u2502 \n\u2502         verify(userService, times(1)).findById(userId);                     \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4fdf099f-c3c7-46f5-89fe-546f0743fb72
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502     }                                                                        \u2502 \n\u2502 }                                                                            \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 10. TROUBLESHOOTING                                                          \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d19a74b7-146f-4258-9dae-47db7388dd40
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Problem: Mocks don't work \n\u2514\u2500\u2500 Solution: Add @ExtendWith(MockitoExtension.class) \n \nProblem: NullPointerException in test \n\u2514\u2500\u2500 Solution: Did you mock the return value? when(service.method()).thenReturn(...) \n \nProblem: Test fails with \"wanted but not invoked\"  [Type here] \n \n\u2514\u2500\u2500 Solution: Check if method name and parameters match exactly \n \nProblem: Wrong number of invocations \n\u2514\u2500\u2500 Solution: Check verify() count matches actual method calls \n \nProblem: Can't use eq() and any() together"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a8544f00-8778-4557-9e66-f74b9cc6e628
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Problem: Can't use eq() and any() together \n\u2514\u2500\u2500 Solution: If you use any() for one parameter, use eq() for specific values \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 11. CHECKLIST BEFORE SUBMITTING TESTS                                       \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u25a1 Test class has @ExtendWith(MockitoExtension.class) \n\u25a1 All dependencies are mocked with @Mock"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f7bea441-7884-45f7-9124-52abf5c98d0d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u25a1 All dependencies are mocked with @Mock \n\u25a1 Controller has @InjectMocks \n\u25a1 Success test case written \n\u25a1 Error test case written \n\u25a1 Edge cases covered \n\u25a1 All tests use AAA pattern \n\u25a1 Tests have descriptive names \n\u25a1 verify() statements added where needed \n\u25a1 All tests pass: mvn test \n\u25a1 No System.out.println() in tests \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 12. REMEMBER                                                                 \u2502"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6debf853-7e08-4d52-bd9b-e62414aeb053
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n       One test = One scenario \n          AAA Pattern = Arrange, Act, Assert \n   Mock = Fake object  [Type here] \n \n   Verify = Check method was called \n    Test success AND failure scenarios \n        Start simple, add complexity gradually \n \nIntegration Test cases: \n \nFile Placement \n1. Test Class \nsrc/test/java/com/britanica/pbl/controller/ \n\u2514\u2500\u2500 DomainControllerIntegrationTest.java \n2. Test Configuration"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 9874367e-0d94-4963-8545-2cb44d3660a2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "2. Test Configuration \nsrc/test/resources/ \n\u2514\u2500\u2500 application-test.properties \n \nStep 1: Add H2 Database Dependency \nAdd to your pom.xml: \n    <!-- H2 Database for Testing --> \n    <dependency> \n        <groupId>com.h2database</groupId> \n        <artifactId>h2</artifactId> \n        <scope>test</scope> \n    </dependency> \n \nRun All Integration Tests \nmvn test -Dtest=DomainControllerIntegrationTest \n \nSample Example: \n  [Type here] \n \n@SpringBootTest                 // \u2190 Loads full Spring context"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ce9246e2-9e01-44ee-982e-ed1218683ab5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "@AutoConfigureMockMvc          // \u2190 Provides MockMvc for HTTP testing \n@Transactional                 // \u2190 Rollback after each test \nclass DomainControllerIntegrationTest { \n     \n    @Autowired \n    private MockMvc mockMvc;            // \u2190 Simulates HTTP requests \n     \n    @Autowired \n    private DomainRepository repository; // \u2190 Real repository \n     \n    @Test \n    @WithMockUser(authorities = \"Admin\") // \u2190 Mock security \n    void testListDomains_Success() throws Exception {"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8989d435-de36-403c-8035-34f1b27935f9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "// Insert REAL data into database \n        Domain domain = new Domain(); \n        domain.setDomainName(\"Test\"); \n        repository.save(domain);  // \u2190 Actually saves to H2 database \n         \n        // Make REAL HTTP request \n        mockMvc.perform(get(\"/domain/list\")) \n            .andExpect(status().isOk()) \n            .andExpect(jsonPath(\"$.domain\", hasSize(1))); \n    } \n} \n \nMockMvc Request Patterns \nGET Request  [Type here] \n \njava \nmockMvc.perform(get(\"/domain/list\")"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 74941caf-9b72-4df3-b600-9194ead5ef1a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "java \nmockMvc.perform(get(\"/domain/list\") \n        .param(\"page\", \"0\") \n        .param(\"size\", \"10\") \n        .param(\"search\", \"test\") \n        .contentType(MediaType.APPLICATION_JSON)) \n    .andExpect(status().isOk()) \n    .andExpect(jsonPath(\"$.domain\").isArray()); \nPOST Request \njava \nmockMvc.perform(post(\"/domain/create\") \n        .contentType(MediaType.APPLICATION_JSON) \n        .content(jsonString)) \n    .andExpect(status().isCreated())"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 3f601637-6b81-442e-8e22-5e1505c4e188
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": ".andExpect(status().isCreated()) \n    .andExpect(jsonPath(\"$.error\").value(\"false\")); \nPUT Request \njava \nmockMvc.perform(put(\"/domain/update\") \n        .contentType(MediaType.APPLICATION_JSON) \n        .content(jsonString)) \n    .andExpect(status().isOk()); \nDELETE Request \njava \nmockMvc.perform(delete(\"/domain/delete/{id}\", domainId) \n        .contentType(MediaType.APPLICATION_JSON)) \n    .andExpect(status().isOk()); \n \n    Common JSON Path Expressions \njava \n// Check string value"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c4b8a8c8-43a2-4974-8b92-61a0ba106163
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "java \n// Check string value \n.andExpect(jsonPath(\"$.error\").value(\"false\"))  [Type here] \n \n \n// Check boolean \n.andExpect(jsonPath(\"$.error\").value(false)) \n \n// Check number \n.andExpect(jsonPath(\"$.totalElements\").value(10)) \n \n// Check array size \n.andExpect(jsonPath(\"$.domain\", hasSize(5))) \n \n// Check array exists \n.andExpect(jsonPath(\"$.domain\").isArray()) \n \n// Check nested value \n.andExpect(jsonPath(\"$.domain[0].domainName\").value(\"Test\")) \n \n// Check exists"}


created_at: 2026-04-10 10:34:07
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 45160cf3-aae5-4a88-977c-50924557a206
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "946", "lesson_id": "1226", "content_id": "1785", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "// Check exists \n.andExpect(jsonPath(\"$.message\").exists()) \n \n// Check doesn't exist \n.andExpect(jsonPath(\"$.error\").doesNotExist()) \n \n// Check not null \n.andExpect(jsonPath(\"$.domain\").isNotEmpty())"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 478e8f61-bf03-4699-99a5-0db81194e02f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \ni \n \n \nAbout the T utorial \nThe PHP Hypertext Preprocessor (PHP) is a programming language that allows web \ndevelopers to create dynamic content that interacts with databases. PHP is basically used \nfor developing web-based software applications. This tutorial will help you understand the \nbasics of PHP and how to put it in practice. \n \nAudience \nThis tutorial has been designed to meet the requirements of all those readers who are \nkeen to learn the basics of PHP."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1df8e1ec-a749-420a-9b06-81bfeca7867e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "keen to learn the basics of PHP.   \n \nPrerequisites \nBefore proceeding with this tutorial, you should have a basic understanding of computer \nprogramming, Internet, Database, and MySQL. \n \nCopyright & Disclaimer \n\u00a9 Copyright 2016 by Tutorials Point (I) Pvt. Ltd.  \n \nAll the content and graphics published in this e-book are the property of Tutorials Point (I) \nPvt. Ltd.  The user of this e-book is prohibited to reuse, retain, copy, distribute or republish"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 83f722a7-2d34-4090-b1e6-333867ef8350
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "any contents or a part of contents of this e -book in any manner without written consent \nof the publisher.   \n \nWe strive to update the contents of our website and tutorials as timely and as precisely as \npossible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. \nLtd. provides no guarantee regarding the accuracy, timeliness o r completeness of our \nwebsite or its contents including this tutorial. If you discover any errors on our website or"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4938e7b7-bd71-4037-8158-dab5b117ec1d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "in this tutorial, please notify us at contact@tutorialspoint.com \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n    PHP \nii \n \n \nT able of Contents \nAbout the Tutorial ............................................................................................................................................ i \nAudience ........................................................................................................................................................... i"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d5e195ec-7ded-41ab-8d6b-7708a713714e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Prerequisites ..................................................................................................................................................... i \nCopyright & Disclaimer ..................................................................................................................................... i \nTable of Contents ............................................................................................................................................ ii"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e6db6cf8-2137-4357-94c0-689c2a31c566
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PART 1: LEARNING PHP ................................ ................................ ................................ ............... 1 \n PHP \u2500 Introduction .................................................................................................................................... 2 \nCommon Uses of PHP ...................................................................................................................................... 2"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5a425d7d-c03b-4bff-9f55-f41cc5115eda
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Characteristics of PHP ..................................................................................................................................... 3 \n\"Hello World\" Script in PHP ............................................................................................................................. 3 \n PHP \u2500 Environment Setup ......................................................................................................................... 4"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: fbb040d1-bd15-415a-a7a8-6abe2fb53067
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP Parser Installation .................................................................................................................................... 4 \nPHP Installation on Linux or Unix with Apache ............................................................................................... 4 \nPHP Installation on Mac OS X with Apache ..................................................................................................... 6"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6531af2c-85e0-4d2c-aee2-485faca300f6
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP Installation on Windows NT/2000/XP with IIS ......................................................................................... 7 \nPHP Installation on Windows NT/2000/XP with Apache ................................................................................. 8 \nApache Configuration for PHP ....................................................................................................................... 10"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 18e61dca-59a8-4548-ba5d-1a0892f5bdb0
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP.INI file Configuration .............................................................................................................................. 11 \n PHP \u2500 Syntax Overview ........................................................................................................................... 15 \nEscaping to PHP ............................................................................................................................................. 15"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6dc19665-f489-4668-bcca-4ab32278279b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Commenting PHP Code ................................................................................................................................. 16 \nPHP is whitespace insensitive ........................................................................................................................ 16 \nPHP is case sensitive ...................................................................................................................................... 17"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 2f63f63c-2010-4f38-8141-2675694dcb8f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Statements are expressions terminated by semicolons ................................................................................ 17 \nExpressions are combinations of tokens ....................................................................................................... 17 \nBraces make blocks ....................................................................................................................................... 17"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: cb2c59e2-b7d4-4b8f-92da-ecf2066f8658
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Running PHP Script from Command Prompt ................................................................................................. 18 \n PHP \u2500 Variable Types .............................................................................................................................. 19 \nIntegers .......................................................................................................................................................... 20"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c472823a-8ec1-4a12-8912-fef97c22067d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Doubles .......................................................................................................................................................... 20 \nBoolean .......................................................................................................................................................... 20"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 19bbe29d-eb6b-472f-89e6-70ba3c0a1c4f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "NULL .............................................................................................................................................................. 21 \nStrings ............................................................................................................................................................ 21 \nVariable Naming ............................................................................................................................................ 24"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 987266dd-8caa-4955-a0a0-09025955efb8
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2013 Variables .............................................................................................................................................. 24 \nPHP Local Variables ....................................................................................................................................... 24 \nPHP Function Parameters .............................................................................................................................. 25"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 02999d88-f949-48f3-a39d-7141b06d082f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP Global Variables ..................................................................................................................................... 25 \nPHP Static Variables ....................................................................................................................................... 26 \n PHP \u2500 Constants ...................................................................................................................................... 27"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b7279043-9ace-4b38-a53b-7711d25493d0
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Operator Types ............................................................................................................................. 29 \nArithmetic Operators..................................................................................................................................... 29    PHP \niii \n \nComparison Operators .................................................................................................................................. 31"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 3149f431-d7bc-48ab-97f2-74a5ac3e639c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Logical Operators ........................................................................................................................................... 33 \nAssignment Operators ................................................................................................................................... 35 \nConditional Operator ..................................................................................................................................... 37"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 64cb9295-3d4d-490b-9457-f7bb02a27e97
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Operators Categories .................................................................................................................................... 38 \nPrecedence of PHP Operators ....................................................................................................................... 38 \n PHP \u2500 Decision Making ........................................................................................................................... 40"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 77a94277-8716-4a8e-8512-1611126ceced
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "The If...Else Statement................................................................................................................................... 40 \nThe ElseIf Statement...................................................................................................................................... 41 \nThe Switch Statement ................................................................................................................................... 42"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8791fcb2-36c0-472b-a247-3e8dc7867a66
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Loop Types .................................................................................................................................... 45 \nThe for loop statement .................................................................................................................................. 45 \nThe while loop statement .............................................................................................................................. 46"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a7554004-6722-4493-9687-57af914fe141
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "The do...while loop statement ...................................................................................................................... 47 \nThe foreach loop statement .......................................................................................................................... 48 \nThe break statement ..................................................................................................................................... 48"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 47d28a61-c5cc-42eb-acc1-8e5bf200cd0f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "The continue statement ................................................................................................................................ 50 \n PHP \u2500 Arrays ........................................................................................................................................... 52 \nNumeric Array ............................................................................................................................................... 52"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7aafecb6-5eb5-46e8-b622-9fa1262ebb25
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Associative Arrays .......................................................................................................................................... 53 \nMultidimensional Arrays ............................................................................................................................... 54 \n PHP \u2500 Strings ........................................................................................................................................... 57"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 91808494-cde0-4bf8-9345-56143799e744
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "String Concatenation Operator ..................................................................................................................... 58 \nUsing the strlen() function ............................................................................................................................. 58 \nUsing the strpos() function ............................................................................................................................ 59"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c3229811-9bb0-4843-b160-9336559aedf4
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Web Concepts ............................................................................................................................... 60 \nIdentifying Browser & Platform ..................................................................................................................... 60 \nDisplay Images Randomly .............................................................................................................................. 61"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8e9e4f16-a81e-4e2f-84e5-f2fc16818014
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Using HTML Forms ......................................................................................................................................... 62 \nBrowser Redirection ...................................................................................................................................... 63 \nDisplaying \"File Download\" Dialog Box ......................................................................................................... 64"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c40826cf-c091-45fa-a1e9-a31fa8baaa72
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 GET and POST Methods ................................................................................................................ 66 \nThe GET Method ............................................................................................................................................ 66 \nThe POST Method .......................................................................................................................................... 67"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1a365a21-4a90-4e1d-977e-8b269fc82ae5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "The $_REQUEST variable ............................................................................................................................... 68 \n PHp \u2500 File Inclusion ................................................................................................................................. 70 \nThe include() Function ................................................................................................................................... 70"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c178948f-fb52-4465-ab2f-48c6e4f2ef17
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "The require() Function ................................................................................................................................... 71 \n PHP \u2500 Files & I/O ..................................................................................................................................... 72 \nOpening and Closing Files .............................................................................................................................. 72"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4537bee4-de85-4876-9cd8-b4e85e95ff76
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Reading a file ................................................................................................................................................. 73 \nWriting a File ................................................................................................................................................. 74 \n PHP \u2500 Functions ...................................................................................................................................... 76"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: fb1d1f0e-0473-42b8-b309-3c5b2f853491
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Creating PHP Function ................................................................................................................................... 76 \nPHP Functions with Parameters .................................................................................................................... 77 \nPassing Arguments by Reference .................................................................................................................. 77    PHP \niv"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: cc301c84-954d-49c9-b5f9-acf6863950ad
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "iv \n \nPHP Functions returning value ...................................................................................................................... 78 \nSetting Default Values for Function Parameters ........................................................................................... 79 \nDynamic Function Calls .................................................................................................................................. 80"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 9e2e2cf0-7237-4d44-a14f-24c940a8bdf2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Cookies ......................................................................................................................................... 81 \nThe Anatomy of a Cookie .............................................................................................................................. 81 \nSetting Cookies with PHP............................................................................................................................... 82"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6ac8e706-4677-451b-b8e2-42806d4cb571
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Accessing Cookies with PHP .......................................................................................................................... 83 \nDeleting Cookie with PHP .............................................................................................................................. 84 \n PHP \u2500 Sessions ........................................................................................................................................ 85"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 2d2cc3d2-4c47-4343-820f-90d3cff65e93
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Starting a PHP Session ................................................................................................................................... 85 \nDestroying a PHP Session .............................................................................................................................. 87 \nTurning on Auto Session ................................................................................................................................ 87"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 620df55a-146e-430a-a4e9-a549ec6af236
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Sessions without cookies ............................................................................................................................... 87 \n PHP \u2500 Sending Emails .............................................................................................................................. 89 \nSending plain text email ................................................................................................................................ 89"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a56ec454-5e2b-46e9-a0af-5a4ea201105f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Sending HTML email ...................................................................................................................................... 91 \nSending attachments with email ................................................................................................................... 92 \n PHP \u2500 File Uploading ............................................................................................................................... 95"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f4566f31-c697-4418-b403-8463020321eb
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Creating an Upload Form .............................................................................................................................. 95 \nCreating an upload script .............................................................................................................................. 96 \n PHP \u2500 Coding Standard ........................................................................................................................... 98"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5209a8e5-8f31-4148-874f-a94f1729314d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PART 2: ADVANCED PHP ................................ ................................ ................................ ......... 101 \n PHP \u2500 Predefined Variables ................................................................................................................... 102 \nPHP Superglobals ......................................................................................................................................... 102"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f85d8a26-4477-44f8-9290-60a36f2e4a5a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Server variables: $_SERVER ......................................................................................................................... 103 \n PHP \u2500 Regular Expression ...................................................................................................................... 106 \nPOSIX Regular Expressions .......................................................................................................................... 106"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 30b68eef-e87d-48ad-b41c-dcbbfe94e01f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP's Regexp POSIX Functions .................................................................................................................... 108 \nPHP \u2500 Function ereg() .................................................................................................................................. 108 \nPHP \u2500 Function ereg_replace() .................................................................................................................... 110"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 815ef8f1-cf18-40c7-bfd3-1e6a35796882
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Function eregi() ................................................................................................................................. 111 \nPHP \u2500 Function eregi_replace() ................................................................................................................... 112 \nPHP \u2500 Function split() .................................................................................................................................. 113"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 659c0f31-d8a4-4644-ad7d-01bc14fb7366
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Function spliti() ................................................................................................................................. 114 \nPHP \u2500 Function sql_regcase() ...................................................................................................................... 115 \nPERL Style Regular Expressions ................................................................................................................... 115"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 49f28edf-7e1c-435d-aaf8-a46e27215df8
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP's Regexp PERL Compatible Functions .................................................................................................. 117 \nPHP \u2500 Function preg_match() ...................................................................................................................... 117 \nPHP \u2500 Function preg_match_all() ................................................................................................................ 118"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 785a783d-f835-4e2d-862a-99e49c1ba9a7
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Function preg_replace() .................................................................................................................... 119 \nPHP \u2500 Function preg_split() ......................................................................................................................... 120 \nPHP \u2500 Function preg_grep() ........................................................................................................................ 121"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 870c3959-f08c-40c8-8f94-3db9396b9c59
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Function preg_quote() ...................................................................................................................... 122 \n PHP \u2500 Error and Exception Handling...................................................................................................... 124 \nUsing die() function ..................................................................................................................................... 124    PHP \nv"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1e7c82f6-b1ad-4114-bbaf-5712083f9c6f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "v \n \nDefining Custom Error Handling Function ................................................................................................... 124 \nExceptions Handling .................................................................................................................................... 127 \n PHP \u2500 Bugs Debugging .......................................................................................................................... 129"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1bc60db5-d1cf-47c5-9cf2-623e9c9644ff
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 Date and Time ............................................................................................................................ 131 \nGetting the Time Stamp with time() ............................................................................................................ 131 \nConverting a Time Stamp with getdate() .................................................................................................... 131"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c6f630c1-aca1-462b-bf52-e04880f91366
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Converting a Time Stamp with date() .......................................................................................................... 133 \n PHP \u2500 PHP and MySQL .......................................................................................................................... 136 \nWhat you should already have? .................................................................................................................. 136"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1c366120-d6e1-44f0-b7ac-79c6a1581eef
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Connecting to MySQL Database .................................................................................................................. 137 \nCreate MySQL Database Using PHP ............................................................................................................. 138 \nDelete MySQL Database Using PHP ............................................................................................................. 143"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 589efce5-e5f3-402f-90c7-520af0c56110
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Insert Data to MySQL Database .................................................................................................................. 144 \nRetrieving Data from MySQL Database ....................................................................................................... 148 \nUsing Paging through PHP ........................................................................................................................... 152"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b73fd26b-2570-4acf-8961-3f11bbe8034c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Updating Data into MySQL Database .......................................................................................................... 154 \nDeleting Data from MySQL Database .......................................................................................................... 157 \nUsing PHP to Backup MySQL Database ....................................................................................................... 159"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: bd6ae74b-2b0f-440f-97e5-9be5168b18c3
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 PHP and AJAX ............................................................................................................................. 162 \nWhat is AJAX ? ............................................................................................................................................. 162 \nPHP and AJAX Example ................................................................................................................................ 162"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a5dd2829-89d4-4c66-b0d6-d025aaa3b2b9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Client Side HTML file.................................................................................................................................... 163 \nServer Side PHP file ..................................................................................................................................... 165 \n PHP \u2500 PHP and XML .............................................................................................................................. 167"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c5c353c1-579a-4f5e-a043-81e599f6ed89
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "HTML list that's not valid XML ..................................................................................................................... 167 \nHTML list that is valid XML .......................................................................................................................... 167 \nParsing an XML Document .......................................................................................................................... 167"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d1a14775-1f61-4a4c-9814-84e7ac3bb347
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Generating an XML Document .................................................................................................................... 169 \n PHP \u2500 Object Oriented Programming .................................................................................................... 170 \nObject Oriented Concepts ........................................................................................................................... 170"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8cd8632d-ebad-40de-9faf-b86bb96d9e21
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Defining PHP Classes ................................................................................................................................... 171 \nCreating Objects in PHP ............................................................................................................................... 172 \nCalling Member Functions ........................................................................................................................... 172"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ab163b09-4343-47cf-86a5-d993231a9af3
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Constructor Functions ................................................................................................................................. 173 \nDestructor .................................................................................................................................................... 174 \nInheritance .................................................................................................................................................. 174"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ccefa1ec-ee46-4b8b-895b-662b0b6df231
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Function Overriding ..................................................................................................................................... 175 \nPublic Members ........................................................................................................................................... 175 \nPrivate members ......................................................................................................................................... 175"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7882d5d0-ad40-43b8-83b3-da59529d46a0
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Protected members ..................................................................................................................................... 176 \nInterfaces ..................................................................................................................................................... 177 \nConstants ..................................................................................................................................................... 177"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f2cc1228-cf7a-490b-92c0-bec5a88971b5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Abstract Classes ........................................................................................................................................... 177 \nStatic Keyword ............................................................................................................................................. 178 \nFinal Keyword .............................................................................................................................................. 178"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 9b60de74-6b61-4bb1-b99b-f515b53857d4
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2500 PHP for C Developers .................................................................................................................. 181 \nSimilarities ................................................................................................................................................... 181 \nDifferences .................................................................................................................................................. 181    PHP \nvi"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 76b28c84-c9fd-497b-8bf7-866036d2a3a2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "vi \n \n PHP \u2500 PHP for PERL Developers ............................................................................................................ 183 \nSimilarities ................................................................................................................................................... 183 \nDifferences .................................................................................................................................................. 183"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 894f33ff-42cd-432e-b9ed-c0ea162045a2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PART 3: FUNCTION REFERENCE................................ ................................ ...............................  185 \n PHP \u2500 Function Reference ..................................................................................................................... 186    PHP \n7 \n \nPart 1: Learning PHP    PHP \n8 \n \nPHP started out as a small open source project that evolved as more and more people found"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 98008ffd-a4d6-48db-bd3e-74b5dcb9d968
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "out how useful it was. Rasmus Lerdorf unleashed the first version of PHP way back in 1994.  \n \n\uf0b7 PHP is a recursive acronym for \"PHP: Hypertext Preprocessor\". \n \n\uf0b7 PHP is a server side scripting language that is embedded in HTML. It is used to manage \ndynamic content, databases, session tracking, even build entire e-commerce sites. \n \n\uf0b7 It is integrated with a number of popular databases, including MySQL, PostgreSQL, \nOracle, Sybase, Informix, and Microsoft SQL Server."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 9387ded8-0169-48c4-87fd-a0867567cd52
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 PHP is pleasingly zippy in its execution, especially when compiled as an Apache module \non the Unix side. The MySQL server, once started, executes even very complex queries \nwith huge result sets in record-setting time. \n \n\uf0b7 PHP supports a large number of major protocols such as POP3, IMAP, and LDAP. PHP4 \nadded support for Java and distributed object architectures (COM and CORBA), making \nn-tier development a possibility for the first time."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 60c900c1-b4d3-4a45-96a6-69621de1c7be
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 PHP is forgiving: PHP language tries to be as forgiving as possible. \n \n\uf0b7 PHP Syntax is C-Like. \nCommon Uses of PHP \nPHP performs system functions, i.e. from files on a system it can create, open, read, write, \nand close them. The other uses of PHP are:  \n \n\uf0b7 PHP can handle forms, i.e. gather data from files, save data  to a file, thru email you \ncan send data, return data to the user. \n \n\uf0b7 You add, delete, modify elements within your database thru PHP."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e6250c93-9c78-4b0d-89de-81a25a86e1be
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 Access cookies variables and set cookies. \n \n\uf0b7 Using PHP, you can restrict users to access some pages of your website. \n \n\uf0b7 It can encrypt data. \n \n \n \n \n\uf0b7  \n PHP \u2500 INTRODUCTION    PHP \n9 \n \nCharacteristics of PHP \nFive important characteristics make PHP's practical nature possible: \n \n\uf0b7 Simplicity \n \n\uf0b7 Efficiency \n \n\uf0b7 Security \n \n\uf0b7 Flexibility \n \n\uf0b7 Familiarity \n\"Hello World\" Script in PHP \nTo get a feel of PHP, first start with simple PHP scripts. Since \"Hello, World!\" is an essential"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: beedabcc-aff7-4aa3-bbf3-5104337590bd
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "example, first we will create a friendly little \"Hello, World!\" script. \n \nAs mentioned earlier, PHP is embedded in HTML. That means that in amongst your normal \nHTML (or XHTML if you're cutting-edge) you'll have PHP statements like this: \n<html> \n<head> \n<title>Hello World</title> \n<body> \n    <?php echo \"Hello, World!\";?> \n</body> \n</html> \nIt will produce the following result: \nHello, World! \nIf you examine the HTML output of the above example, you'll notice that the PHP code is not"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 24cfa0c0-b784-490c-a2e1-d35d865546c2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "present in the file sent from the server to your Web browser. All of the PHP present in the \nWeb page is processed and stripped from the page; the only thing returned to the client from \nthe Web server is pure HTML output. \n \nAll PHP code must be included inside one of the three special markup tags ate are recognized \nby the PHP Parser. \n<?php PHP code goes here ?> \n \n<?    PHP code goes here ?> \n \n<script language=\"php\"> PHP code goes here </script>"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a729f68a-3eb8-45cc-95f7-b236b0553d23
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Most common tag is the <?php...?> and we will also use the same tag in our tutorial.    PHP \n10 \n \n \nFrom the next chapter, we will start with PHP Environment Setup on your machine and then \nwe will dig out almost all concepts related to PHP to make you comfortable with t he PHP \nlanguage.    PHP \n11 \n \nIn order to develop and run PHP Web pages , three vital components need to be installed on \nyour computer system."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b9fd7900-ab0f-4c20-bdaa-c4bbcfd49cfa
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "your computer system. \n \nWeb Server - PHP will work with virtually all Web Server software, including Microsoft's \nInternet Information Server (IIS) but then most often used is freely available Apache Server. \nDownload Apache for free here: http://httpd.apache.org/download.cgi \n \nDatabase - PHP will work with virtually all database software, including Oracle and Sybase \nbut most commonly used is freely available MySQL database. Download MySQL for free here:"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6dede1a2-8b02-408f-86b6-5fd25d955a2f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "http://www.mysql.com/downloads/index.html \n \nPHP Parser  - In order to process PHP script instructions , a parser must be installed to \ngenerate HTML output that can be sent to the Web Browser. This tutorial will guide you how \nto install PHP parser on your computer. \nPHP Parser Installation \nBefore you proceed, it is important to make sure that you have a proper environment setup \non your machine to develop your web programs using PHP."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f534d22d-09ca-4647-b4ff-3d73de1c1e4a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Type the following address into your browser's address box. \nhttp://127.0.0.1/info.php \nIf this displays a  page showing your PHP installation related information , then it means you \nhave PHP and Webserver installed properly. Otherwise you have to follow given procedure to \ninstall PHP on your computer. \n \nThis section will guide you to install and configure PHP over the following four platforms: \n\uf0b7 PHP Installation on Linux or Unix with Apache \n\uf0b7 PHP Installation on Mac OS X with Apache"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 52f83c9e-9b38-4e31-89fe-f665b6d71196
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 PHP Installation on Mac OS X with Apache \n\uf0b7 PHP Installation on Windows NT/2000/XP with IIS \n\uf0b7 PHP Installation on Windows NT/2000/XP with Apache \nPHP Installation on Linux or Unix with Apache \nIf you plan to install PHP on Linux or any other variant of Unix, then here is the list of \nprerequisites: \n \n PHP \u2500 ENVIRONMENT SETUP    PHP \n12 \n \n\uf0b7 The PHP source distribution http://www.php.net/downloads.php \nThe latest Apache source distribution  \nhttp://httpd.apache.org/download.cgi"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: effc7923-b48a-412d-b1d3-810a1a3fa52b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "http://httpd.apache.org/download.cgi \n \n\uf0b7 A working PHP -supported database, if you plan to use one ( For example MySQL, \nOracle etc. ) \n \n\uf0b7 Any other supported software to which PHP must connect (mail server, BCMath \npackage, JDK, and so forth) \n \n\uf0b7 An ANSI C compiler \n \n\uf0b7 Gnu make utility - you can freely download it at \nhttp://www.gnu.org/software/make \n \nNow here are the steps to install Apache and PHP5 on your Linux or Unix machine. If your"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e534d4c6-1e13-4df0-8f99-347e1284fbbe
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP or Apache versions are different, then please take care accordingly. \n\uf0b7  \n\uf0b7 If you haven't already done so, unzip and untar your Apache source distribution. Unless \nyou have a reason to do otherwise, /usr/local is the standard place. \ngunzip -c apache_1.3.x.tar.gz \ntar -xvf apache_1.3.x.tar \n\uf0b7 Build the apache Server as follows \ncd apache_1.3.x \n./configure --prefix=/usr/local/apache --enable-so \nmake \nmake install"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 45f8ad45-8feb-43db-9b78-4ba0fc003862
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "make \nmake install \n\uf0b7 Unzip and untar your PHP source distribution. Unless you have a reason to do \notherwise, /usr/local is the standard place. \ngunzip -c php-5.x.tar.gz \ntar -xvf php-5.x.tar \ncd php-5.x \n\uf0b7 Configure and Build your PHP, assuming you are using MySQL database. \n./configure --with-apxs=/usr/sbin/apxs \\ \n            --with-mysql=/usr/bin/mysql \nmake \nmake install \n\uf0b7 Install the php.ini file. Edit this file to get configuration directives: \ncd ../../php-5.x"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: cde8d62d-98fe-48f4-a17d-7fc20a430dad
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "cd ../../php-5.x \ncp php.ini-dist /usr/local/lib/php.ini \n    PHP \n13 \n \n\uf0b7 Tell your Apache server where you want to serve files from, and what extension(s) \nyou want to identify PHP files. .php is the standard, but you can use .html, .phtml, or \nwhatever you want. \n \no Go to your HTTP configuration files (/usr/local/apache/conf or whatever your \npath is) \n \no Open httpd.conf with a text editor. \n \no Search for the word DocumentRoot (which should appear twice), and change"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8b9dacdf-d676-45dc-8498-1f17a619dc2e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "both paths to the directory you want to serve files out of (in ou r case, \n/home/httpd). We recommend a home directory rather than the default \n/usr/local/apache/htdocs because it is more secure, but it doesn.t have to be \nin a home directory. You will keep all your PHP files in this directory. \n \n\uf0b7 Add at least one PHP extension directive, as shown in the first line of code that follows. \nIn the second line, we.ve also added a second handler to have all HTML files parsed \nas PHP"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 82ea67de-7242-4cba-96da-9169c7f5a6de
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "as PHP \nAddType application/x-httpd-php .php \nAddType application/x-httpd-php .html \n\uf0b7 Restart your server. Every time you change your HTTP configuration or php.ini files, \nyou must stop and start your server again. \ncd ../bin \n./apachectl start \n\uf0b7 Set the document root directory permissions to world-executable. The actual PHP files \nin the directory need only be world-readable (644). If necessary, replace /home/httpd \nwith your document root below: \nchmod 755 /home/httpd/html/php"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8b55a20e-4dfb-4242-8a86-f4fba78bd096
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "chmod 755 /home/httpd/html/php \n\uf0b7 Open a text editor. Type: <?php phpinfo(); ?>. Save this file in your Web server's \ndocument root as info.php. \n \n\uf0b7 Start any Web browser and browse the file. You must always use an HTTP request \n(http://www.testdomain.com/info.php or http://localhost/info.php or \nhttp://127.0.0.1/info.php) rather than a filename (/home/httpd/info.php) for the file \nto be parsed correctly \n \nYou should see a long table of infor mation about your new PHP installation message"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 2707e2f5-35d9-4ed2-aefc-a8a80998e95b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Congratulations!    PHP \n14 \n \nPHP Installation on Mac OS X with Apache \nMac users have the choice of either a binary or a source installation. In fact, your OS X  \nprobably came with Apache and PHP preinstalled. This is likely to be quite an old build, and it \nprobably lacks many of the less common extensions. \n \nHowever, if all you want is a quick Apache + PHP + MySQL/PostgreSQL setup on your laptop,"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: fafb78d1-b7fc-407b-9a58-1cfe6257986f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "this is certainly the easiest way to fly. All you need to do is edit your Apache configuration file \nand turn on the Web server. \n \nSo just follow the steps given below: \n \n\uf0b7 Open the Apache config file in a text editor as root. \nsudo open -a TextEdit /etc/httpd/httpd.conf \n \n\uf0b7 Edit the file. Uncomment the following lines: \nLoad Module php5_module \nAddModule mod_php5.c \nAddType application/x-httpd-php .php \n\uf0b7 You may also want to uncomment the <Directory /home/*/Sites> block or otherwise"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4e2a18ce-2ee0-4dc6-ac39-967865e7c45f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "tell Apache which directory to serve out of. \n \n\uf0b7 Restart the Web server \nsudo apachectl graceful \n\uf0b7 Open a text editor. Type: <?php phpinfo(); ?>. Save this file in your Web server's \ndocument root as info.php. \n\uf0b7  \n\uf0b7 Start any Web browser and browse the file.you must always use an HTTP request  \n(http://www.testdomain.com/info.php or http://localhost/info.php or \nhttp://127.0.0.1/info.php) rather than a filename (/home/httpd/info.php) for the file \nto be parsed correctly"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 470cc1fe-c121-4e2c-b5af-06f17722faee
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "to be parsed correctly \n \nYou should see a long table of information about your new PHP installation message \nCongratulations! \nPHP Installation on Windows NT/2000/XP with IIS \nThe Windows server installation of PHP running IIS is much simpler than on Unix, since it \ninvolves a precompiled binary rather than a source build. \n \nIf you plan to install PHP over Windows, then here is the list of prerequisites:  \n    PHP \n15"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d9a59ce0-4b5a-40fb-a64f-b63bde46ed48
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \n15 \n \n\uf0b7 A working PHP-supported Web server. Under previous versions of PHP, IIS/PWS was \nthe easiest choice because a module version of PHP was ava ilable for it; but PHP now \nhas added a much wider selection of modules for Windows. \n \n\uf0b7 A correctly installed PHP-supported database like MySQL or Oracle etc. (if you plan to \nuse one) \n \n\uf0b7 The PHP Windows binary distribution (download it atwww.php.net/downloads.php)"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: dddc3b97-c286-4cfe-9388-5969ec2f6e4b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 A utility to unzip files (search http://download.cnet.com for PC file compression \nutilities) \n \nNow here are the steps to install Apache and PHP5 on your Windows machine. If your PHP \nversion is different, then please take care accordingly. \n\uf0b7  \n\uf0b7 Extract the binary archive using your unzip utility; C:\\PHP is a common location. \n \n\uf0b7 Copy some .dll files from your PHP directory to your systems directory (usually"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 852279d2-c3c7-4a95-bbaa-37dc650908e0
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "C:\\Winnt\\System32). You need php5ts.dll for every case. You will also probably need \nto copy the file corresponding to your Web server module - C:\\PHP\\Sapi\\php5isapi.dll. \nIt's possible you will also need others from the dlls subfolder - but start with the two \nmentioned above and add more if you need them. \n \n\uf0b7 Copy either php.ini -dist or php.ini -recommended (preferably the latter) to your \nWindows directory (C:\\Winnt or C:\\Winnt40), and rename it php.ini. Open this file in"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7f950041-8e41-41a8-9c13-bf6a30b0c8a9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "a text editor (for example, Notepad). Edit this file to get configuration directives; We \nhighly recommend new users set error reporting to E_ALL on their development \nmachines at this point. For now, the most important thing is the doc_root directive \nunder the Paths and Directories section.  make sure this matches yo ur IIS Inetpub \nfolder (or wherever you plan to serve out of). \n \n\uf0b7 Stop and restart the WWW service. Go to the Start menu -> Settings -> Control Panel"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b9c44673-ad2c-40cc-aa15-25c0c6aef2dd
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "-> Services. Scroll down the list to IIS Admin Service. Select it and click Stop. After it \nstops, select Worl d Wide Web Publishing Service and click Start. Stopping and \nrestarting the service from within Internet Service Manager will not suffice. Since this \nis Windows, you may also wish to reboot. \n \n\uf0b7 Open a text editor. Type: <?php phpinfo(); ?>. Save this file in your Web server's \ndocument root as info.php."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 86dd7760-5e74-44b4-8706-ef3423d0cfd2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "document root as info.php. \n \n\uf0b7 Start any Web browser and browse the file.you must always use an HTTP request \n(http://www.testdomain.com/info.php or http://localhost/info.php or \nhttp://127.0.0.1/info.php) rather than a filename (/home/httpd/i nfo.php) for the file \nto be parsed correctly \n \nYou should see a long table of information about your new PHP installation message \nCongratulations!    PHP \n16 \n \nPHP Installation on Windows NT/2000/XP with Apache"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e7d8d5c2-6816-47d1-9b16-d64e1face84f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "To install Apache with PHP 5 on Windows follow the following steps. If your PHP and Apache \nversions are different, then please take care accordingly. \n \n\uf0b7 Download Apache server from www.apache.org/dist/httpd/binaries/win32. You want \nthe current  stable release version with the no_src.msi extension. Double -click the \ninstaller file to install; C: \\Program Files is a common location. The installer will also \nask you whether you want to run Apache as a service or from the command line or"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6aa9151e-cedc-441a-a1f1-412ad56c063c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "DOS prompt. We  recommend you do not install as a service, as this may cause \nproblems with startup. \n \n\uf0b7 Extract the PHP binary archive using your unzip utility; C:\\PHP is a common location. \n \n\uf0b7 Copy some .dll files from your PHP directory to your system directory (usually \nC:\\Windows). You need php5ts.dll for every case. You will also probably need to copy \nthe file corresponding to your Web server module - C:\\PHP\\Sapi\\php5apache.dll. to"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 0305a9f3-3e6b-4cd5-b7d7-1ec1a0dc61cf
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "your Apache modules directory. It's possible that you will also need others from the \ndlls subfolder, but start with the two mentioned previously and add more if you need \nthem. \n \n\uf0b7 Copy either php.ini -dist or php.ini -recommended (preferably the latter) to your \nWindows directory, and rename it php.ini. Open this file in a text editor (for example, \nNotepad). Edit this file to get configuration directives; At this point, we highly"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5bf1d5b3-67e5-407a-be7d-d31a6108ec34
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "recommend that new users set error reporting to E_ALL on their development \nmachines. \n \n\uf0b7 Tell your Apache server where you want to serve files from and what extension(s) you \nwant to identify PHP files (.php is the standard, but you can use .html, .phtml, or \nwhatever you want). Go to your HTTP configuration files (C: \\Program Files \\Apache \nGroup\\Apache\\conf or whatever your path is), and open httpd.conf with a text editor."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 97e44f2d-64a6-4bba-9f93-5ca149c956e5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Search for the word DocumentRoot (which should appear twice) and change both paths \nto the directory you want to serve files out of. (The default is C:\\Program Files\\Apache \nGroup\\Apache\\htdocs.). Add at least one PHP extension directive as shown in the first \nline of the following code: \n \nLoadModule php5_module modules/php5apache.dll \nAddType application/x-httpd-php .php .phtml \n\uf0b7  \n\uf0b7 You may also need to add the following line: \nAddModule mod_php5.c"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 59cc9061-1807-42ed-b91a-085e6823f61f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "AddModule mod_php5.c \n\uf0b7 Stop and restart the WWW service. Go to the Start menu -> Settings -> Control Panel \n-> Services. Scroll down the list to IIS Admin Service. Select it and click Stop. After it \nstops, select World Wide Web Publishing Service and click Start. Stopping and \nrestarting the service from within Internet Service Manager will not suffice. Sin ce this \nis Windows, you may also wish to reboot.    PHP \n17"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 57442a9b-e23f-4822-8bbc-c1ec5d746afd
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "17 \n \n \n\uf0b7 Open a text editor. Type: <?php phpinfo(); ?>. Save this file in your Web server's \ndocument root as info.php. \n \n\uf0b7 Start any Web browser and browse the file.you must always use an HTTP request \n(http://www.testdomain.com/info.php or http://localhost/info.php or \nhttp://127.0.0.1/info.php) rather than a filename (/home/httpd/info.php) for the file \nto be parsed correctly \n \nYou should see a long table of information about your new PHP installation message \nCongratulations!"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5a3d76b3-78a0-432d-a7df-fe2c24eae11d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Congratulations! \n \nApache Configuration \nIf you are using Apache as a Web Server , then this section will guide you to edit Apache \nConfiguration Files. \n \nPHP.INI File Configuration \nThe PHP configuration file, php.ini, is the final and most immediate way to affect PHP's \nfunctionality. \n \nJust Check it here: PHP.INI File Configuration \n \nWindows IIS Configuration \nTo configure IIS on your Windows machine you can refer your IIS Reference Manual shipped \nalong with IIS."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: aa49c76e-b55b-482c-8eaa-13a48676f6d0
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "along with IIS. \n \nApache Configuration for PHP \nApache uses httpd.conf file for global settings, and the .htaccess  file for per-directory access \nsettings. Older versions of Apache split up httpd.conf into three files (access.conf, httpd.conf, \nand srm.conf), and some users still prefer this arrangement. \n \nApache server has a very powerful, but slightly complex, configur ation system of its own. \nLearn more about it at the Apache Web site: www.apache.org"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b8d33657-6862-468e-abb7-b9ce2007a77b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "The following section describe s settings in httpd.conf that affect PHP directly and cannot be \nset elsewhere. If you have standard installation , then httpd.conf will be found at \n/etc/httpd/conf: \nTimeout \nThis value sets the default number of seconds before any HTTP request will time out. If you \nset PHP's max_execution_time to longer than this value, PHP will keep grinding away but the    PHP \n18"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 0e623c56-9d6b-4b18-9711-d4ae00f83c0f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "18 \n \nuser may see a 404 error. In safe mode, this value will be ignored; you must use the timeout \nvalue in php.ini instead \nDocumentRoot \nDocumentRoot designates the root directory for all HTTP processes on that server. It looks \nsomething like this on Unix: \nDocumentRoot ./usr/local/apache_1.3.6/htdocs. \nYou can choose any directory as document root. \n \nAddType \nThe PHP MIME type needs to be set here for PHP files to be  parsed. Remember that you can"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1aac2273-e6f9-4286-9e7b-beae134e560b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "associate any file extension with PHP like .php3, .php5 or .htm. \nAddType application/x-httpd-php .php \nAddType application/x-httpd-phps .phps \nAddType application/x-httpd-php3 .php3 .phtml \nAddType application/x-httpd-php .html \nAction \nYou must uncomment this line for the Windows apxs module version of Apache with shared \nobject support: \nLoadModule php4_module modules/php4apache.dll \nor on Unix flavors: \nLoadModule php4_module modules/mod_php.so \n \nAddModule"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 721abe9b-2737-432d-b60b-d39f526810a8
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "AddModule \nYou must uncomment this line for the static module version of Apache. \nAddModule mod_php4.c \nPHP .INI file Configuration \nThe PHP configuration file, php.ini, is the final and most immediate way to affect PHP's \nfunctionality. The php.ini file is read each time PHP is initialized.in other words, whenever \nhttpd is restarted for the module version or with each script execution for the CGI version. If    PHP \n19"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: cf8fedfc-0021-4972-9d1c-4bbbec15e6ef
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "19 \n \nyour change isn\u2019t showing up, remember to stop and restart httpd. If it still isn\u2019t showing up, \nuse phpinfo() to check the path to php.ini. \n \nThe configuration file is well commented and thorough. Keys are case sensitive, keyword \nvalues are not; whitespace, and lines beginning with semicolons are ignored. Booleans can \nbe represented by 1/0, Yes/No, On/Off, or True/False. The default v alues in php.ini-dist will \nresult in a reasonable PHP installation that can be tweaked later."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b470de1d-b7cf-45b9-bcc3-5d9c8f10ebc4
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Here we are explaining the important settings in php.ini which you may need for your PHP \nParser. \nshort_open_tag = Off \nShort open tags look like this: <? ?>. This option must be set to Off if you want to use XML \nfunctions. \nsafe_mode = Off \nIf this is set to On, you probably compiled PHP with the --enable-safe-mode flag. Safe mode \nis most relevant to CGI use. See the explanation in the section \"CGI compile -time options\". \nearlier in this chapter. \nsafe_mode_exec_dir = [DIR]"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e3d3f1c5-902a-4e18-b4f4-3ba6ca1fa3e4
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "safe_mode_exec_dir = [DIR] \nThis option is relevant only if safe mode is on; it can also be set with the --with-exec-dir flag \nduring the Unix build process. PHP in safe mode only executes external binaries out of this \ndirectory. The default is /usr/local/bin. This has nothing to do with serving up a normal \nPHP/HTML Web page. \n \nsafe_mode_allowed_env_vars = [PHP_] \nThis option sets which environment variables users can change in safe mode. The default is"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4222c81c-6b16-462d-9406-52b133b8094f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "only those variables prepended with \"PHP_\". If this directive is empty, most variables are \nalterable. \nsafe_mode_protected_env_vars = [LD_LIBRARY_PATH] \nThis option sets which environment variables users can't change in safe mode, even if \nsafe_mode_allowed_env_vars is set permissively. \n \ndisable_functions = [function1, function2...] \nA welcome addition to PHP4 configuration and one perpetuated in PHP5 is the ability to disable"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: aea0e124-ecb2-4e87-9fff-661d47bc6c71
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "selected functions for security reasons. Previously, this necessitated hand -editing the C code \nfrom which PHP was made. Filesystem, system, and network functions should probably be the \nfirst to go because allowing the capability to write files and alter the system over HTTP is \nnever such a safe idea.    PHP \n20 \n \nmax_execution_time = 30 \nThe function set_time_limit() won.t  work in safe mode, so this is the main way to make a"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b3e3d228-5c15-438a-bd2b-8bec2f4915e3
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "script time out in safe mode. In Windows, you have to abort based on maximum memory \nconsumed rather than time. You can also use the Apache timeout setting to timeout if you \nuse Apache, but that will apply to non-PHP files on the site too. \nerror_reporting = E_ALL & ~E_NOTICE \nThe default value is E_ALL & ~E_NOTICE, all errors except notices. Development servers \nshould be set to at least the default; only production servers should even consider a lesser \nvalue \nerror_prepend_string = [\"\"]"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 50b111a6-0e0d-4720-811d-d931b3414346
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "value \nerror_prepend_string = [\"\"] \nWith its bookend, error_append_string, this setting allows you to make error messages a \ndifferent color than other text, or what  you have. \nwarn_plus_overloading = Off \nThis setting issues a warning if the + operator is used with strings, as in a form value. \nvariables_order = EGPCS \nThis configuration setting supersedes gpc_order. Both are now deprecated along with \nregister_globals. It sets the order of the different variables: Environment, GET, POST,"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 99250ad1-d586-4ab3-a4ed-370977524838
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "COOKIE, and SERVER (aka Built-in). \n \nYou can change this order around. Variables will be overwritten successively in left -to-right \norder, with the rightmost one winning the hand every time. This means if you left the default \nsetting and happened to use the same name for an en vironment variable, a POST variable, \nand a COOKIE variable, the COOKIE variable would own that name at the end of the process. \nIn real life, this doesn't happen much. \n \nregister_globals = Off"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 3652ef52-cc9c-481b-9728-2b16fceae54a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "register_globals = Off \nThis setting allows you to decide whether you wish to register EGPCS variables as global. This \nis now deprecated, and as of PHP4.2, this flag is set to Off by default. Use superglobal arrays \ninstead. All the major code listings in this book use superglobal arrays. \ngpc_order = GPC \nThis setting has been GPC Deprecated. \n \n \n \n    PHP \n21 \n \nmagic_quotes_gpc = On \nThis setting escapes quotes in incoming GET/POST/COOKIE data. If you use a lot of forms"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1d815ff3-5fcb-4453-ac30-6e83e0e90fdc
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "which possibly submit to themselves or other forms and display form values, you may need \nto set this directive to On or prepare to use addslashes() on string-type data. \nmagic_quotes_runtime = Off \nThis setting escapes quotes in incoming database and text strings. Remember that SQL adds \nslashes to single quotes and apostrophes when storing strings and does not strip them off \nwhen returning them. If this setting is Off, you will need to use stripslashes() when outputting"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 923c9eaa-9e60-4876-9695-be28f20f7367
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "any type of string data from a SQL database. If magic_quotes_sybase is set to On, this must \nbe Off. \nmagic_quotes_sybase = Off \nThis setting escapes single quotes in incoming database and text strings with Sybase -style \nsingle quotes rather than backslashes. If magic_quotes_runtime is set to On, this must be \nOff. \nauto-prepend-file = [path/to/file] \nIf a path is specified here, PHP must automatically include() it at the beginning of every PHP \nfile. Include path restrictions do apply."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5988da83-9a58-45d7-9720-206db7820bc9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "file. Include path restrictions do apply. \nauto-append-file = [path/to/file] \nIf a path is specified here, PHP must automatically include() it at the end of every PHP \nfile.unless you escape by using the exit() function. Include path restrictions do apply . \ninclude_path = [DIR] \nIf you set this value, you will only be allowed to include or require files from these directories. \nThe include directory is generally under your document root; this is mandatory if you.re"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 3526fdd3-8eaf-48bf-8815-63561cfc6d16
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "running in safe mode. Set this to . in order to include files from the same directory your script \nis in. Multiple directories are separated by colons: .:/usr/local/apache/htdocs:/usr/local/lib.  \ndoc_root = [DIR] \nIf you.re using Apache, you.ve already set a document root for this server or virtual hos t in \nhttpd.conf. Set this value here if you.re using safe mode or if you want to enable PHP only on \na portion of your site (for example, only in one subdirectory of your Web root)."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 01b77a03-8319-4297-bf69-b685c3962c64
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "file_uploads = [on/off] \nTurn on this flag if you will upload files using PHP script. \nupload_tmp_dir = [DIR] \nDo not uncomment this line unless you understand the implications of HTTP uploads!     PHP \n22 \n \nsession.save-handler = files \nExcept in rare circumstances, you will not want to change this setting. So don't touch it.  \nignore_user_abort = [On/Off] \nThis setting controls what happens if a site visitor clicks the browser.s Stop button. The default"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b0fa1cba-db74-4f45-b754-093ffb3c7e03
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "is On, which means that the script continues to run to completion or timeout. If the setting is \nchanged to Off, the script will abort. This setting only works in module mode, not CGI. \nmysql.default_host = hostname \nThe default server host to use when connecting to the database server if no other host is \nspecified. \nmysql.default_user = username \nThe default user name to use when connecting to the datab ase server if no other name is \nspecified. \nmysql.default_password = password"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: dcfab59a-1bad-4110-9dfe-80ba53b0caa8
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "specified. \nmysql.default_password = password \nThe default password to use when connecting to the database server if no other password is \nspecified. \n    PHP \n23 \n \nEscaping to PHP \nThe PHP parsing engine needs a way to differentiate PHP code from other elements in the \npage. The mechanism for doing so is known as 'escaping to PHP.' There are four ways to do  \nthis: \nCanonical PHP tags \nThe most universally effective PHP tag style is: \n<?php...?>"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1b77f826-30e8-470b-b258-ed53a1829513
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "<?php...?> \nIf you use this style, you can be positive that your tags will always be correctly interpreted.  \nShort-open (SGML-style) tags \nShort or short-open tags look like this: \n<?...?> \nShort tags are, as one might expect, the shortest option You must do one of two things to \nenable PHP to recognize the tags: \n \n\uf0b7 Choose the --enable-short-tags configuration option when you're building PHP. \n \n\uf0b7 Set the short_open_tag setting in your php.ini file to on. This option must be disabled"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 0f42c2e3-f5f2-4939-bd7f-cdbc48275c68
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "to parse XML with PHP because the same syntax is used for XML tags. \nASP-style tags \nASP-style tags mimic the tags used by Active Server Pages to delineate code blocks. ASP -\nstyle tags look like this: \n<%...%> \nTo use ASP-style tags, you will need to set the configuration option in your php.ini file.  \nHTML script tags \nHTML script tags look like this: \n<script language=\"PHP\">...</script> \n PHP \u2500 SYNTAX OVERVIEW    PHP \n24 \n \n \nCommenting PHP Code"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: de11f633-d7cd-4405-9d7e-32974a9cbf9e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "24 \n \n \nCommenting PHP Code \nA comment is the portion of a program that exists only for the human reader and stripped out \nbefore displaying the programs result. There are two commenting formats in PHP:  \n \nSingle-line comments: They are generally used for short explanations or notes relevant to \nthe local code. Here are the examples of single line comments. \n<? \n# This is a comment, and \n# This is the second line of the comment \n// This is a comment too. Each style comments only"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b0e9903e-476e-42e1-bab9-af14651d9696
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "print \"An example with single line comments\"; \n?> \n \nMulti-lines printing:  Here are the examples to print multiple lines in a single print \nstatement: \n<? \n# First Example \nprint <<<END \nThis uses the \"here document\" syntax to output \nmultiple lines with $variable interpolation. Note \nthat the here document terminator must appear on a \nline with just a semicolon no extra whitespace! \nEND; \n# Second Example \nprint \"This spans \nmultiple lines. The newlines will be \noutput as well\"; \n?>"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 74461cc7-440e-4a0f-9465-2298af18e821
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "output as well\"; \n?> \n \nMulti-lines comments: They are generally used to provide pseudocode algorithms and more \ndetailed explanations when necessary. The multiline style of commenting is the same as in C. \nHere are the example of multi lines comments. \n<? \n/* This is a comment with multiline \n    Author : Mohammad Mohtashim \n    Purpose: Multiline Comments Demo \n    Subject: PHP \n*/ \nprint \"An example with multi line comments\"; \n?>    PHP \n25 \n \nPHP is whitespace insensitive"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f010f6a0-7a13-4b5b-ac73-19e2b7e3e528
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "?>    PHP \n25 \n \nPHP is whitespace insensitive \nWhitespace is the stuff you type that is typically invisible on the screen, including spaces, \ntabs, and carriage returns (end-of-line characters). \n \nPHP whitespace insensitive means that it almost never matters how many whitespace \ncharacters you have in a row.one whitespace character is the same as many such characters. \n \nFor example, each of the following PHP statements that assigns the sum of 2 + 2 to the \nvariable $four is equivalent:"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 48b4e060-fe7c-455a-8868-1792beb3cc53
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "variable $four is equivalent: \n$four = 2 + 2; // single spaces \n$four <tab>=<tab2<tab>+<tab>2 ; // spaces and tabs \n$four = \n2+ \n2; // multiple lines \nPHP is case sensitive \nYeah it is true that PHP is a case sensitive language. Try out the following example: \n<html> \n<body> \n<? \n$capital = 67; \nprint(\"Variable capital is $capital<br>\"); \nprint(\"Variable CaPiTaL is $CaPiTaL<br>\"); \n?> \n</body> \n</html> \nThis will produce the following result: \nVariable capital is 67 \nVariable CaPiTaL is"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d5deedc1-6f43-43b3-8a13-bde8d4a928d9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Variable capital is 67 \nVariable CaPiTaL is \nStatements are expressions terminated by semicolons \nA statement in PHP is any expression that is followed by a semicolon (;).Any sequence of valid \nPHP statements that is enclosed by the PHP tags is a valid PHP program. Here is a typical \nstatement in PHP, which in this case assigns a string of characters to a variable called \n$greeting: \n \n$greeting = \"Welcome to PHP!\";    PHP \n26 \n \nExpressions are combinations of tokens"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 840a5193-ff88-4d7f-95be-4e53f10284ab
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "26 \n \nExpressions are combinations of tokens \nThe smallest building blocks of PHP are the indivisible tokens, such as numbers (3.14159), \nstrings (.two.), variables ($two), constants (TRUE), and the special words that make up the \nsyntax of PHP itself like if, else, while, for and so forth \nBraces make blocks \nAlthough statements cannot be combined like expressions, you can always put a sequence of \nstatements anywhere a statement can go by enclosing them in a set of curly braces."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 03a86892-07d1-4c9f-843f-219b04085f3c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Here both statements are equivalent: \n \n \nif (3 == 2 + 1) \n  print(\"Good - I haven't totally lost my mind.<br>\"); \n \nif (3 == 2 + 1) \n{ \n   print(\"Good - I haven't totally\"); \n   print(\"lost my mind.<br>\"); \n} \nRunning PHP Script from Command Prompt \nYes you can run your PHP script on your command prompt. Assuming you have the following \ncontent in test.php file \n<?php \n   echo \"Hello PHP!!!!!\"; \n?> \nNow run this script as command prompt as follows: \n$ php test.php"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 33fab8dc-717d-48e7-bfd0-2e3dc82d6bec
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "$ php test.php \nIt will produce the following result \nHello PHP!!!!! \n \n \n    PHP \n27 \n \nThe main way to store information in the middle of a PHP program is by using a variable.  \nHere are the most important things to know about variables in PHP. \n \n\uf0b7 All variables in PHP are denoted with a leading dollar sign ($). \n \n\uf0b7 The value of a variable is the value of its most recent assignment. \n \n\uf0b7 Variables are assigned with the = operator, with the variable on the left-hand side and"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f19673ed-406f-416e-9f00-2bebca81a616
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "the expression to be evaluated on the right. \n \n\uf0b7 Variables can, but do not need, to be declared before assignment. \n \n\uf0b7 Variables in PHP do not have intrinsic types - a variable does not know in advance \nwhether it will be used to store a number or a string of characters. \n \n\uf0b7 Variables used before they are assigned have default values. \n \n\uf0b7 PHP does a good job of automatically converti ng types from one to another when \nnecessary. \n \n\uf0b7 PHP variables are Perl-like."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b8b9df92-5c6f-45d3-aa51-8efd1439007d
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "necessary. \n \n\uf0b7 PHP variables are Perl-like. \n \nPHP has a total of eight data types which we use to construct our variables: \n \n\uf0b7 Integers: are whole numbers, without a decimal point, like 4195. \n \n\uf0b7 Doubles: are floating-point numbers, like 3.14159 or 49.1. \n \n\uf0b7 Booleans: have only two possible values either true or false. \n \n\uf0b7 NULL: is a special type that only has one value: NULL. \n \n\uf0b7 Strings: are sequences of characters, like 'PHP supports string operations.'"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c80d3961-cf76-4ccd-beda-df9f3d4ac7f5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 Arrays: are named and indexed collections of other values. \n \n\uf0b7 Objects: are instances of programmer -defined classes, which can package up both \nother kinds of values and functions that are specific to the class. \n \n\uf0b7 Resources: are special variables that hold references to resources external t o PHP \n(such as database connections). \n \nThe first five are  simple types, and the next two (arrays and objects) are compound - the"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: cc42d1b0-39d4-442b-98dc-2738bb5793c8
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "compound types can package up other arbitrary values of arbitrary type, whereas the simple \ntypes cannot. \n PHP \u2500 VARIABLE TYPES    PHP \n28 \n \n \nWe will explain only simile data type in this chapters. Array and Objects will be explained \nseparately. \nIntegers \nThey are whole numbers, without a decimal point, like 4195. They are the simplest type .they \ncorrespond to simple whole numbers, both positive and negative. Integer s can be assigned"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b2a8a230-e6da-42a7-80c0-933a21cd9171
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "to variables, or they can be used in expressions, like so: \n$int_var = 12345; \n$another_int = -12345 + 12345; \nInteger can be in decimal (base 10), octal (base 8), and hexadecimal (base 16) format. \nDecimal format is the default, octal integers are specified with a leading 0, and hexadecimals \nhave a leading 0x. \n \nFor most common platforms, the largest integer is (2**31 . 1) (or 2,147,483,647), and the \nsmallest (most negative) integer is . (2**31 . 1) (or .2,147,483,647). \nDoubles"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 4de9b782-5073-41a8-9f23-8457760b347a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Doubles \nThey like 3.14159 or 49.1. By default, doubles print with the minimum number of decimal \nplaces needed. For example, the code: \n$many = 2.2888800; \n$many_2 = 2.2111200; \n$few = $many + $many_2; \nprint(.$many + $many_2 = $few<br>.); \nIt produces the following browser output: \n2.28888 + 2.21112 = 4.5 \nBoolean \nThey have only two possible values either true or false. PHP provides a couple of constants \nespecially for use as Booleans: TRUE and FALSE, which can be used like so: \nif (TRUE)"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 98ac680e-c881-4f49-a53f-2681ad87c2a6
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "if (TRUE) \n   print(\"This will always print<br>\"); \nelse \n   print(\"This will never print<br>\");    PHP \n29 \n \nInterpreting other types as Booleans \nHere are the rules for determine the \"truth\" of any value not already of the Boolean type:  \n \n\uf0b7 If the value is a number, it is false if exactly equal to zero and true otherwise.  \n \n\uf0b7 If the value is a string, it is false if the string is empty (has zero characters) or is the \nstring \"0\", and is true otherwise."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 97f8fd39-5268-43eb-89c3-ff6385f91c72
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "string \"0\", and is true otherwise. \n \n\uf0b7 Values of type NULL are always false. \n \n\uf0b7 If the value is an array, it is false if it contains no other values, and it is true otherwise. \nFor an object, containing a value means having a member variable that has been \nassigned a value. \n \n\uf0b7 Valid resources are true (although some functions that return resources when they are \nsuccessful will return FALSE when unsuccessful). \n \n\uf0b7 Don't use double as Booleans."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a9571940-623c-48c0-a7d7-c3e7852951e9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 Don't use double as Booleans. \n \nEach of the following variables has the truth value embedded in its name when it is used in a \nBoolean context. \n$true_num = 3 + 0.14159; \n$true_str = \"Tried and true\" \n$true_array[49] = \"An array element\"; \n$false_array = array(); \n$false_null = NULL; \n$false_num = 999 - 999; \n$false_str = \"\"; \nNULL \nNULL is a special type that only has one value: NULL. To give a variable the NULL value, \nsimply assign it like this: \n$my_var = NULL;"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 19d45513-00d1-4827-ad15-0dc6656971d5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "simply assign it like this: \n$my_var = NULL; \nThe special constant NULL is capitalized by convention, but actually it is case insensitive; you \ncould just as well have typed: \n$my_var = null; \nA variable that has been assigned NULL has the following properties: \n \n\uf0b7 It evaluates to FALSE in a Boolean context. \n\uf0b7     PHP \n30 \n \n\uf0b7 It returns FALSE when tested with IsSet() function. \nStrings \nThey are sequences of characters, like \"PHP supports string operations\". Following are valid"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 90272212-784d-4b05-b9ab-8c7197ee0e91
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "examples of string: \n$string_1 = \"This is a string in double quotes\"; \n$string_2 = \"This is a somewhat longer, singly quoted string\"; \n$string_39 = \"This string has thirty-nine characters\"; \n$string_0 = \"\"; // a string with zero characters \nSingly quoted strings are treated almost literally, whereas doubly quoted strings replace \nvariables with their values as well as specially interpreting certain character sequences.  \n<? \n$variable = \"name\"; \n$literally = 'My $variable will not print!\\\\n';"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 8093b931-d3c1-43e2-8567-ea07250aca3a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "$literally = 'My $variable will not print!\\\\n'; \nprint($literally); \n$literally = \"My $variable will print!\\\\n\"; \nprint($literally); \n?> \n \nThis will produce the following result: \nMy $variable will not print!\\n \nMy name will print \nThere are no artificial limits on string length - within the bounds of available memory, you \nought to be able to make arbitrarily long strings. \n \nStrings that are delimited by double quotes (as in \"this\") are preprocessed in both the \nfollowing two ways by PHP:"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 916478f9-be99-47a2-b942-c437739c459c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "following two ways by PHP: \n \n\uf0b7 Certain character sequences beginning with backslash ( \\) are replaced with special \ncharacters \n \n\uf0b7 Variable names (starting with $) are replaced with string representations of their \nvalues. \n \nThe escape-sequence replacements are: \n \n\uf0b7 \\n is replaced by the newline character \n    PHP \n31 \n \n\uf0b7 \\r is replaced by the carriage-return character \n \n\uf0b7 \\t is replaced by the tab character \n \n\uf0b7 \\$ is replaced by the dollar sign itself ($)"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6cb4715e-8756-4f21-85c8-8eed96a7e8c9
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "\uf0b7 \\$ is replaced by the dollar sign itself ($) \n \n\uf0b7 \\\" is replaced by a single double-quote (\") \n \n\uf0b7 \\\\ is replaced by a single backslash (\\) \n \nHere Document \nYou can assign multiple lines to a single string variable using here document: \n<?php \n \n$channel =<<<_XML_ \n<channel> \n<title>What's For Dinner<title> \n<link>http://menu.example.com/<link> \n<description>Choose what to eat tonight.</description> \n</channel> \n_XML_; \n \necho <<<END \nThis uses the \"here document\" syntax to output"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 43192c56-5847-429f-b513-1e66c9cf62bc
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "This uses the \"here document\" syntax to output \nmultiple lines with variable interpolation. Note \nthat the here document terminator must appear on a \nline with just a semicolon. no extra whitespace! \n<br /> \nEND; \n \nprint $channel; \n?> \nThis will produce the following result: \nThis uses the \"here document\" syntax to output \n \nmultiple lines with variable interpolation. Note    PHP \n32 \n \nthat the here document terminator must appear on a \nline with just a semicolon. no extra whitespace!"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5836d47e-1c66-40e8-a515-eb3445331ac2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "<channel> \n<title>What's For Dinner<title> \n<link>http://menu.example.com/<link> \n<description>Choose what to eat tonight.</description> \n \n \n \nVariable Naming \nRules for naming a variable is: \n \n\uf0b7 Variable names must begin with a letter or underscore character. \n \n\uf0b7 A variable name can consist of numbers, letters, underscor es but you cannot use \ncharacters like + , - , % , ( , ) . & , etc \n \nThere is no size limit for variables. \nPHP \u2013 V ariables"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e738314c-919d-4d1b-9f36-2dfaa2c5d5cb
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "PHP \u2013 V ariables \nScope can be defined as the range of availability a variable has to the program in which it is \ndeclared. PHP variables can be one of four scope types: \n \n\uf0b7 Local variables \n \n\uf0b7 Function parameters \n \n\uf0b7 Global variables \n \n\uf0b7 Static variables \nPHP Local Variables \nA variable declared in a function is considered local; that is, it can be referenced solely in that \nfunction. Any assignment outside of that function will be considered to be an entirely different"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 15c25369-7c91-4a59-80b2-e46a9dc75a59
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "variable from the one contained in the function: \n<? \n$x = 4; \nfunction assignx () {    PHP \n33 \n \n$x = 0; \nprint \"\\$x inside function is $x.  \n\"; \n} \nassignx(); \nprint \"\\$x outside of function is $x.  \n\"; \n?> \nThis will produce the following result. \n$x inside function is 0. \n$x outside of function is 4. \nPHP Function Parameters \nPHP Functions are covered in detail in  PHP Function Chapter. In short, a function is a small"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7c0863cb-66fc-40fa-8754-923d50d8bd97
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "unit of program which can take some input in the form of parameters and does some \nprocessing and may return a value. \n \nFunction parameters are declared after the function name and inside parentheses. They are \ndeclared much like a typical variable would be: \n<? \n// multiply a value by 10 and return it to the caller \nfunction multiply ($value) { \n    $value = $value * 10; \n    return $value; \n} \n \n$retval = multiply (10); \nPrint \"Return value is $retval\\n\"; \n?>"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6d214752-0227-4fc2-be38-4d5b162b6f52
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Print \"Return value is $retval\\n\"; \n?> \nThis will produce the following result. \nReturn value is 100    PHP \n34 \n \nPHP Global Variables \nIn contrast to local variables, a global variable can be accessed in any part of the program. \nHowever, in order to be modified, a global variable must be explicitly declared to be global in \nthe func tion in which it is to be modified. This is accomplished, conveniently enough, by"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f6dd00b6-b355-4894-8adf-e8346be8b013
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "placing the keyword  GLOBAL in front of the variable that should be recognized as global. \nPlacing this keyword in front of an already existing variable tells PHP to use the variable having \nthat name. Consider an example: \n<? \n$somevar = 15; \nfunction addit() { \nGLOBAL $somevar; \n$somevar++; \nprint \"Somevar is $somevar\"; \n} \naddit(); \n?> \n \n \n \nThis will produce the following result. \nSomevar is 16 \nPHP Static V ariables"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f0047122-5b4b-460b-b097-0182e557098e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Somevar is 16 \nPHP Static V ariables \nThe final type of variable scoping that I discuss is known as static. In contrast to the variables \ndeclared as function parameters, which are destroyed on the function's exit, a static variable \nwill not lose its value when the function exits and will still hold that value should the function \nbe called again. \n \nYou can declare a variable to be static simply by placing the keyword STATIC in front of the \nvariable name. \n<? \nfunction keep_track() {"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: faaa601b-9c36-43e7-a9b6-beb39f5b9183
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "variable name. \n<? \nfunction keep_track() { \n   STATIC $count = 0; \n   $count++; \n   print $count; \n   print \" \n\";    PHP \n35 \n \n} \nkeep_track(); \nkeep_track(); \nkeep_track(); \n?> \nThis will produce the following result. \n1 \n2 \n3 \n    PHP \n36 \n \nA constant is a name or an identifier for a simple value. A constant value cannot change \nduring the execution of the script. By default , a constant is case -sensitive. By convention,"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5c403f3f-5865-4663-95f5-f2c1d1e9076b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "constant identifiers are always uppercase. A constant name starts with a letter or underscore, \nfollowed by any number of letters, numbers, or underscores. If you have defined a constant, \nit can never be changed or undefined. \n \nTo define a constant you have to use define() function and to retrieve the value of a constant, \nyou have to simply specifying its name. Unlike with variables, you do not need to have a"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: acf90a5c-4c7d-402e-a091-15106f557e17
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "constant with a $. You can also use the function constant() to read a constant's va lue if you \nwish to obtain the constant's name dynamically. \nconstant() function \nAs indicated by the name, this function will return the value of the constant. \n \nThis is useful when you want to retrieve value of a constant, but you do not know its name, \ni.e., it is stored in a variable or returned by a function. \nconstant() example \n<?php \n \ndefine(\"MINSIZE\", 50); \n \necho MINSIZE;"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: adea60f6-240b-4982-bb26-910a0a45a684
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "<?php \n \ndefine(\"MINSIZE\", 50); \n \necho MINSIZE; \necho constant(\"MINSIZE\"); // same thing as the previous line \n \n?> \nOnly scalar data (boolean, integer, float and string) can be contained in constants. \nDifferences between constants and variables are \n\uf0b7 There is no need to write a dollar sign ($) before a constant, where as in Variable one \nhas to write a dollar sign. \n \n\uf0b7 Constants cannot be defined by simple assignment, they may only be defined using \nthe define() function."}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 980ee3b0-a4eb-4f51-95cb-4329015cdc19
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "the define() function. \n \n\uf0b7 Constants may be defined and accessed anywhere without regard to variable scoping \nrules. \n PHP \u2500 CONSTANTS    PHP \n37 \n \n \n\uf0b7 Once the Constants have been set, may not be redefined or undefined. \n \nValid and invalid constant names \n// Valid constant names \ndefine(\"ONE\",     \"first thing\"); \ndefine(\"TWO2\",    \"second thing\"); \ndefine(\"THREE_3\", \"third thing\") \n// Invalid constant names \ndefine(\"2TWO\",    \"second thing\"); \ndefine(\"__THREE__\", \"third value\");"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b318b39b-0c7c-446f-ad39-819b6f806e16
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "define(\"__THREE__\", \"third value\");  \nPHP Magic constants \nPHP provides a large number of predefined constants to any script which it runs. \n \nThere are five magical constants that change depending on where they are used. For example, \nthe value of __LINE__ depends on the line that it's used on in your script. These special \nconstants are case-insensitive and are as follows: \n \nThe following table lists a few \"magical\" PHP constants along with their description:  \n \nName Description"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: c4c2e8b9-6bc1-48f5-8559-ebec3dc86537
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Name Description \n__LINE__ The current line number of the file. \n__FILE__ The full path and filename of the file. If used inside an include, the \nname of the included file is returned. Since PHP \n4.0.2, __FILE__ always contains an absolute path whereas in older \nversions it contained relative path under some circumstances. \n__FUNCTION__ The function name. (Added in PHP 4.3.0) As  of PHP 5 this constant \nreturns the function name as it was declared (case-sensitive). In PHP"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: e0b3569d-2401-4433-86d8-d08d4fb7e289
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "4 its value is always lowercased. \n__CLASS__ The class name. (Added in PHP 4.3.0) As of PHP 5 this constant \nreturns the class name as it was declared (case-sensitive). In PHP 4 \nits value is always lowercased. \n__METHOD__ The class method name. (Added in PHP 5.0.0) The method name is \nreturned as it was declared (case-sensitive).    PHP \n38 \n \nWhat is Operator? Simple answer can be given using expression  4 + 5 is equal to 9. Here"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 25686be1-3cc3-4f15-90a4-c505e1dbf163
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "4 and 5 are called operands and + is called operator. PHP language supports following type \nof operators. \n \n\uf0b7 Arithmetic Operators \n \n\uf0b7 Comparison Operators \n \n\uf0b7 Logical (or Relational) Operators \n \n\uf0b7 Assignment Operators \n \n\uf0b7 Conditional (or ternary) Operators \n \nLet\u2019s have a look on all operators one by one. \nArithmetic Operators  \nThe following arithmetic operators are supported by PHP language: \n \nAssume variable A holds 10 and variable B holds 20 then: \n \nOperator Description Example"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b58ff7bd-6df6-414e-8293-2e1db5233b9c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "Operator Description Example \n+ Adds two operands A + B will give 30 \n- Subtracts second operand from the first A - B will give -10 \n* Multiply both operands A * B will give 200 \n/ Divide the numerator by denominator B / A will give 2 \n% Modulus Operator and remainder of after an \ninteger division \nB % A will give 0 \n++ Increment operator, increases integer value by \none \nA++ will give 11 \n-- Decrement operator, decreases integer value \nby one \nA-- will give 9 \n \n PHP \u2500 OPERATOR TYPES    PHP"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1419df55-4342-4eb8-8db1-005458efa848
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "A-- will give 9 \n \n PHP \u2500 OPERATOR TYPES    PHP \n39 \n \nExample \nTry the following example to understand all the arithmetic operators. Copy and paste following \nPHP program in test.php file and  keep it in your PHP Server's document root and browse it \nusing any browser. \n \n<html> \n<head><title>Arithmetical Operators</title><head> \n<body> \n<?php \n    $a = 42; \n    $b = 20; \n     \n    $c = $a + $b; \n    echo \"Addition Operation Result: $c <br/>\"; \n    $c = $a - $b;"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5512cc7e-9d7e-4da5-9af6-2f397071394b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "$c = $a - $b; \n    echo \"Subtraction Operation Result: $c <br/>\"; \n    $c = $a * $b; \n    echo \"Multiplication Operation Result: $c <br/>\"; \n    $c = $a / $b; \n    echo \"Division Operation Result: $c <br/>\"; \n    $c = $a % $b; \n    echo \"Modulus Operation Result: $c <br/>\"; \n    $c = $a++;  \n    echo \"Increment Operation Result: $c <br/>\"; \n    $c = $a--;  \n    echo \"Decrement Operation Result: $c <br/>\"; \n?> \n</body> \n</html> \nThis will produce the following result:"}


created_at: 2026-04-13 09:44:32
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1854c06c-5a5a-4bc3-aae3-395ab41219cd
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "926", "lesson_id": "1206", "content_id": "1764", "file_name": "php tutorial_v1.pdf", "chroma:document": "</html> \nThis will produce the following result: \nAddition Operation Result: 62 \nSubtraction Operation Result: 22 \nMultiplication Operation Result: 840 \nDivision Operation Result: 2.1    PHP \n40 \n \nModulus Operation Result: 2 \nIncrement Operation Result: 42 \nDecrement Operation Result: 43 \n     PHP \n41 \n \nEnd of ebook preview \nIf you liked what you saw\u2026 \nBuy it from our store @ https://store.tutorialspoint.com"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 3aa6779a-d3bd-4e22-9179-053311b64d67
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "[Type here] \n \nTypes of Test Cases: \n \nUnit Testing \nUnit testing verifies a single function or method in isolation to ensure it works correctly. \n  Example: Testing one function\u2019s logic without database, API, or UI. \n \nIntegration Testing \nIntegration testing verifies multiple functions or modules working together, where one function may call another \nfunction or interact with external components like a database."}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7dc80b73-81ba-4873-b386-dd3935c3f02a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Example: Testing a function that internally calls another function and processes combined results. \n \nFunctional Testing \nFunctional testing verifies the complete feature or page behavior, ensuring the system performs as expected from \nthe user\u2019s perspective. \n  Example: Testing a full page or API endpoint that processes user input and returns output. \n \n \nSpringBoot Test Cases: \n \nReferences (BEST LEARNING LINKS) \n     Official Docs \n   Spring Boot Testing"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: d1923178-4709-4443-9d8d-08f746262f78
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Official Docs \n   Spring Boot Testing \nhttps://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing \n     Baeldung (Highly Recommended) \n   Controller Testing \nhttps://www.baeldung.com/spring-boot-testing \n   MockMvc \nhttps://www.baeldung.com/spring-mvc-test-examples \n          YouTube (Easy) \n\u2022 Search: \u201cSpring Boot MockMvc tutorial\u201d \n\u2022 Channel: Java Brains / Amigoscode \nRecommended Approach for LMS Project  [Type here] \n \nLayer Testing Tool Notes"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: eecdc57e-a48c-4b50-aa95-4bb0ad343eb6
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Layer Testing Tool Notes \nController / API MockMvc Fast, mock dependencies \nService JUnit + Mockito Test business logic without HTTP \nRepository @DataJpaTest Test DB queries with H2 \nFull App Flow @SpringBootTest End-to-end integration \n \nUnit Test Cases \n \n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \n\u2551                    CONTROLLER TESTING QUICK REFERENCE                        \u2551 \n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1aa12640-7eea-4822-a9fb-37fa600dd1bc
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 1. TEST CLASS SETUP                                                          \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n@ExtendWith(MockitoExtension.class)  \u2190 Add this to every test class \nclass YourControllerTest { \n     \n    @Mock                                \u2190 Fake version of dependency \n    private YourService service;"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 607801fe-5a8d-43c7-a251-671074bf4b12
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "private YourService service; \n     \n    @InjectMocks                         \u2190 Real controller with fake dependencies \n    private YourController controller; \n     \n    @Test                                \u2190 This marks a test method \n    void testSomething() { } \n} \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 2. THE AAA PATTERN (Use in Every Test)                                      \u2502  [Type here]"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a743b393-5d2e-4947-b336-118daef74052
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n@Test \nvoid testMethod_Success() { \n     \n    // ===== ARRANGE ===== (Set up) \n    when(service.getData()).thenReturn(data); \n     \n    // ===== ACT ===== (Execute) \n    ResponseEntity<?> response = controller.method(); \n     \n    // ===== ASSERT ===== (Check) \n    assertEquals(HttpStatus.OK, response.getStatusCode()); \n     \n    // ===== VERIFY ===== (Confirm method calls)"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 464984b5-f989-46ea-98e5-0dfb74a0c91f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "// ===== VERIFY ===== (Confirm method calls) \n    verify(service, times(1)).getData(); \n} \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 3. MOCKITO PATTERNS                                                          \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 364f8b82-916d-4011-88d0-53d16a0450bd
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 Pattern                     \u2502 When to Use                                  \u2502 \n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \n\u2502 when().thenReturn()         \u2502 Method returns a value                       \u2502 \n\u2502 when().thenThrow()          \u2502 Method throws exception                      \u2502 \n\u2502 doNothing().when()          \u2502 Method returns void                          \u2502 \n\u2502 any()                       \u2502 Any argument of any type                     \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 93c12618-6fb6-45a6-a1c6-1f366f9620cf
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 anyLong()                   \u2502 Any Long argument                            \u2502 \n\u2502 anyString()                 \u2502 Any String argument                          \u2502  [Type here] \n \n\u2502 eq(value)                   \u2502 Specific value (with any())                  \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nExamples: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 80d32c3f-809c-4bec-a085-eb9e44adec0b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 when(service.findById(1L)).thenReturn(user);                                 \u2502 \n\u2502 when(service.findById(any())).thenReturn(user);                              \u2502 \n\u2502 when(service.save(any())).thenThrow(new RuntimeException());                 \u2502 \n\u2502 doNothing().when(service).delete(1L);                                        \u2502 \n\u2502 when(service.update(eq(1L), any())).thenReturn(updated);                     \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5f1d1222-4f21-48c0-b7a9-19fdd06de6c2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 4. COMMON ASSERTIONS                                                         \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 Assertion                           \u2502 What it Checks                         \u2502 \n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b6e76920-edb6-4cc3-a4aa-f3b5bc79f24a
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 assertEquals(expected, actual)      \u2502 Two values are equal                   \u2502 \n\u2502 assertNotNull(object)               \u2502 Object is not null                     \u2502 \n\u2502 assertTrue(condition)               \u2502 Condition is true                      \u2502 \n\u2502 assertFalse(condition)              \u2502 Condition is false                     \u2502 \n\u2502 assertThrows(Exception.class, ...)  \u2502 Code throws exception                  \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5b05fbf4-b40f-4b09-807f-72009564e2c2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Examples: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 assertEquals(HttpStatus.OK, response.getStatusCode());                       \u2502 \n\u2502 assertNotNull(response.getBody());                                           \u2502 \n\u2502 assertEquals(\"John\", user.getName());                                        \u2502  [Type here] \n \n\u2502 assertTrue(list.isEmpty());                                                  \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 67f2344f-ddf4-4763-ae17-a053f079bf19
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 5. VERIFY METHOD CALLS                                                       \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 verify(service, times(1)).method();     \u2190 Called exactly once                \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 1fb39e5a-7c0b-42e9-a785-76d878efae05
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 verify(service, times(2)).method();     \u2190 Called exactly twice               \u2502 \n\u2502 verify(service, never()).method();      \u2190 Never called                       \u2502 \n\u2502 verify(service, atLeast(1)).method();   \u2190 Called at least once               \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 6. TEST SCENARIOS (Write These for Every Method)                            \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ad45c145-438c-4e61-a8e6-eb2cbbef3e4e
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nFor a GET method: \n\u251c\u2500\u2500    testGetMethod_Success          (Returns 200 OK with data) \n\u251c\u2500\u2500    testGetMethod_NotFound         (Returns 404 when not found) \n\u251c\u2500\u2500    testGetMethod_Error            (Returns 500 on exception) \n\u2514\u2500\u2500    testGetMethod_EmptyData        (Returns 200 with empty list) \n \nFor a POST method: \n\u251c\u2500\u2500    testPostMethod_Success         (Returns 201 CREATED)"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: bf262358-6d24-4901-bef7-759a42e8a3d2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u251c\u2500\u2500    testPostMethod_BadRequest      (Returns 400 for invalid data) \n\u251c\u2500\u2500    testPostMethod_Error           (Returns 500 on exception) \n\u2514\u2500\u2500    testPostMethod_Duplicate       (Returns 409 if already exists) \n \nFor a DELETE method:  [Type here] \n \n\u251c\u2500\u2500    testDeleteMethod_Success       (Returns 200 OK) \n\u251c\u2500\u2500    testDeleteMethod_NotFound      (Returns 404) \n\u2514\u2500\u2500    testDeleteMethod_Error         (Returns 500 on exception)"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: de6578a3-16a2-4788-82fa-c77e7c01ca98
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 7. RUNNING TESTS                                                             \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nCommand Line: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 mvn test                              \u2190 Run all tests                        \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ef48e502-6223-4c52-8593-4a854e128be2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 mvn test -Dtest=YourControllerTest    \u2190 Run specific test class             \u2502 \n\u2502 mvn test -Dtest=YourControllerTest#testMethod  \u2190 Run specific test method   \u2502 \n\u2502 mvn clean test jacoco:report          \u2190 Run with coverage report            \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nIDE: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 Right-click test file \u2192 Run 'YourControllerTest'                            \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 76922f08-67c9-43b8-bcbd-0c0c4ec34d43
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502 Right-click test method \u2192 Run 'testMethod'                                  \u2502 \n\u2502 Click green play button next to test                                        \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 8. TEST NAMING CONVENTION                                                    \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a3a175b5-89e9-4ce6-a9e3-35ee7d1642c6
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Format: test[MethodName]_[Scenario] \n \nExamples: \n\u251c\u2500\u2500 testGetUser_Success  [Type here] \n \n\u251c\u2500\u2500 testGetUser_NotFound \n\u251c\u2500\u2500 testGetUser_Error \n\u251c\u2500\u2500 testCreateUser_Success \n\u251c\u2500\u2500 testCreateUser_ValidationError \n\u251c\u2500\u2500 testDeleteUser_Success \n\u2514\u2500\u2500 testDeleteUser_NotFound \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 9. COMPLETE EXAMPLE                                                          \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 7cec82de-b321-4fb8-8368-57ceff5dc764
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nController: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 @GetMapping(\"/user/{id}\")                                                    \u2502 \n\u2502 public ResponseEntity<User> getUser(@PathVariable Long id) {                \u2502 \n\u2502     User user = userService.findById(id);                                   \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: aaf3f79f-15f5-41a5-bd3d-4a3252cefbc3
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502     return ResponseEntity.ok(user);                                         \u2502 \n\u2502 }                                                                            \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \nTest: \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 @ExtendWith(MockitoExtension.class)                                         \u2502 \n\u2502 class UserControllerTest {                                                  \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: a6fcb6e0-ed79-44cf-b4ee-8f8da6690ff5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502                                                                              \u2502 \n\u2502     @Mock                                                                    \u2502 \n\u2502     private UserService userService;                                        \u2502 \n\u2502                                                                              \u2502 \n\u2502     @InjectMocks                                                             \u2502 \n\u2502     private UserController userController;                                  \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 6c2835b5-47f3-4348-b8e2-f7061394176c
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502                                                                              \u2502  [Type here] \n \n\u2502     @Test                                                                    \u2502 \n\u2502     void testGetUser_Success() {                                            \u2502 \n\u2502         // ARRANGE                                                           \u2502 \n\u2502         Long userId = 1L;                                                    \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: bdf2d9df-13c9-49b6-8cca-b1892e4e0156
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502         User expectedUser = new User(1L, \"John\");                           \u2502 \n\u2502         when(userService.findById(userId)).thenReturn(expectedUser);        \u2502 \n\u2502                                                                              \u2502 \n\u2502         // ACT                                                               \u2502 \n\u2502         ResponseEntity<User> response = userController.getUser(userId);     \u2502 \n\u2502                                                                              \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: f54311cb-47e8-4ae4-8802-35bc31b6c976
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502         // ASSERT                                                            \u2502 \n\u2502         assertEquals(HttpStatus.OK, response.getStatusCode());              \u2502 \n\u2502         assertEquals(\"John\", response.getBody().getName());                 \u2502 \n\u2502                                                                              \u2502 \n\u2502         // VERIFY                                                            \u2502 \n\u2502         verify(userService, times(1)).findById(userId);                     \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 0274957d-e746-4a86-a333-33491c145f91
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2502     }                                                                        \u2502 \n\u2502 }                                                                            \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 10. TROUBLESHOOTING                                                          \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: faf6a6fa-14dc-46dc-a141-6113b2346cb4
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Problem: Mocks don't work \n\u2514\u2500\u2500 Solution: Add @ExtendWith(MockitoExtension.class) \n \nProblem: NullPointerException in test \n\u2514\u2500\u2500 Solution: Did you mock the return value? when(service.method()).thenReturn(...) \n \nProblem: Test fails with \"wanted but not invoked\"  [Type here] \n \n\u2514\u2500\u2500 Solution: Check if method name and parameters match exactly \n \nProblem: Wrong number of invocations \n\u2514\u2500\u2500 Solution: Check verify() count matches actual method calls \n \nProblem: Can't use eq() and any() together"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 39efa96a-6810-4e42-8eb5-5334485364e5
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "Problem: Can't use eq() and any() together \n\u2514\u2500\u2500 Solution: If you use any() for one parameter, use eq() for specific values \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 11. CHECKLIST BEFORE SUBMITTING TESTS                                       \u2502 \n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n\u25a1 Test class has @ExtendWith(MockitoExtension.class) \n\u25a1 All dependencies are mocked with @Mock"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ebe80e0f-fec4-4a4b-9909-68aefc11bf9b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u25a1 All dependencies are mocked with @Mock \n\u25a1 Controller has @InjectMocks \n\u25a1 Success test case written \n\u25a1 Error test case written \n\u25a1 Edge cases covered \n\u25a1 All tests use AAA pattern \n\u25a1 Tests have descriptive names \n\u25a1 verify() statements added where needed \n\u25a1 All tests pass: mvn test \n\u25a1 No System.out.println() in tests \n \n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n\u2502 12. REMEMBER                                                                 \u2502"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 5c797611-479e-4985-8ca0-f477736588fa
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n \n       One test = One scenario \n          AAA Pattern = Arrange, Act, Assert \n   Mock = Fake object  [Type here] \n \n   Verify = Check method was called \n    Test success AND failure scenarios \n        Start simple, add complexity gradually \n \nIntegration Test cases: \n \nFile Placement \n1. Test Class \nsrc/test/java/com/britanica/pbl/controller/ \n\u2514\u2500\u2500 DomainControllerIntegrationTest.java \n2. Test Configuration"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: add0b326-55d9-46c4-88b6-bb33ebcfc01f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "2. Test Configuration \nsrc/test/resources/ \n\u2514\u2500\u2500 application-test.properties \n \nStep 1: Add H2 Database Dependency \nAdd to your pom.xml: \n    <!-- H2 Database for Testing --> \n    <dependency> \n        <groupId>com.h2database</groupId> \n        <artifactId>h2</artifactId> \n        <scope>test</scope> \n    </dependency> \n \nRun All Integration Tests \nmvn test -Dtest=DomainControllerIntegrationTest \n \nSample Example: \n  [Type here] \n \n@SpringBootTest                 // \u2190 Loads full Spring context"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b7afdbe4-a8fa-4c24-99ae-b4649900308b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "@AutoConfigureMockMvc          // \u2190 Provides MockMvc for HTTP testing \n@Transactional                 // \u2190 Rollback after each test \nclass DomainControllerIntegrationTest { \n     \n    @Autowired \n    private MockMvc mockMvc;            // \u2190 Simulates HTTP requests \n     \n    @Autowired \n    private DomainRepository repository; // \u2190 Real repository \n     \n    @Test \n    @WithMockUser(authorities = \"Admin\") // \u2190 Mock security \n    void testListDomains_Success() throws Exception {"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 2b05f346-ca2d-4664-8b3b-fd931a3def6f
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "// Insert REAL data into database \n        Domain domain = new Domain(); \n        domain.setDomainName(\"Test\"); \n        repository.save(domain);  // \u2190 Actually saves to H2 database \n         \n        // Make REAL HTTP request \n        mockMvc.perform(get(\"/domain/list\")) \n            .andExpect(status().isOk()) \n            .andExpect(jsonPath(\"$.domain\", hasSize(1))); \n    } \n} \n \nMockMvc Request Patterns \nGET Request  [Type here] \n \njava \nmockMvc.perform(get(\"/domain/list\")"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 605ceb5a-1dca-46e2-9490-25b7d8ab99b0
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "java \nmockMvc.perform(get(\"/domain/list\") \n        .param(\"page\", \"0\") \n        .param(\"size\", \"10\") \n        .param(\"search\", \"test\") \n        .contentType(MediaType.APPLICATION_JSON)) \n    .andExpect(status().isOk()) \n    .andExpect(jsonPath(\"$.domain\").isArray()); \nPOST Request \njava \nmockMvc.perform(post(\"/domain/create\") \n        .contentType(MediaType.APPLICATION_JSON) \n        .content(jsonString)) \n    .andExpect(status().isCreated())"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: 41b9aec1-08b1-4a39-a146-62948584576b
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": ".andExpect(status().isCreated()) \n    .andExpect(jsonPath(\"$.error\").value(\"false\")); \nPUT Request \njava \nmockMvc.perform(put(\"/domain/update\") \n        .contentType(MediaType.APPLICATION_JSON) \n        .content(jsonString)) \n    .andExpect(status().isOk()); \nDELETE Request \njava \nmockMvc.perform(delete(\"/domain/delete/{id}\", domainId) \n        .contentType(MediaType.APPLICATION_JSON)) \n    .andExpect(status().isOk()); \n \n    Common JSON Path Expressions \njava \n// Check string value"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: b5422692-2f5c-4495-8408-bf77c6a8e504
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "java \n// Check string value \n.andExpect(jsonPath(\"$.error\").value(\"false\"))  [Type here] \n \n \n// Check boolean \n.andExpect(jsonPath(\"$.error\").value(false)) \n \n// Check number \n.andExpect(jsonPath(\"$.totalElements\").value(10)) \n \n// Check array size \n.andExpect(jsonPath(\"$.domain\", hasSize(5))) \n \n// Check array exists \n.andExpect(jsonPath(\"$.domain\").isArray()) \n \n// Check nested value \n.andExpect(jsonPath(\"$.domain[0].domainName\").value(\"Test\")) \n \n// Check exists"}


created_at: 2026-04-13 10:32:46
topic: persistent://default/default/eb5f0541-5f65-4c0a-8306-13adcd830c10
id: ebaf9e3e-404b-488c-9637-f46baf58c2c2
encoding: FLOAT32
metadata:
{"company_id": "3", "course_id": "958", "lesson_id": "1238", "content_id": "1798", "file_name": "Types of Test Cases_v1.pdf", "chroma:document": "// Check exists \n.andExpect(jsonPath(\"$.message\").exists()) \n \n// Check doesn't exist \n.andExpect(jsonPath(\"$.error\").doesNotExist()) \n \n// Check not null \n.andExpect(jsonPath(\"$.domain\").isNotEmpty())"}


